source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_declaration.cpp @ 100

Last change on this file since 100 was 100, checked in by rosiere, 15 years ago

1) Bug fix (Operation, Instruction)
2) Modif Return Address Stack
3) Add Soft Test
4) Add Soc Test

  • Property svn:keywords set to Id
File size: 2.3 KB
Line 
1#ifdef VHDL
2/*
3 * $Id: Queue_vhdl_declaration.cpp 100 2009-01-08 13:06:27Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Generic/Queue/include/Queue.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace generic {
14namespace queue {
15
16
17#undef  FUNCTION
18#define FUNCTION "Queue::vhdl_declaration"
19  void Queue::vhdl_declaration (Vhdl * & vhdl)
20  {
21    log_printf(FUNC,Queue,FUNCTION,"Begin");
22
23    vhdl->set_type    ("Tqueue","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_data));
24   
25    vhdl->set_signal  ("reg_DATA             ", "Tqueue");
26
27    vhdl->set_signal  ("signal_READ          ", 1);
28    vhdl->set_signal  ("signal_WRITE         ", 1);
29    vhdl->set_signal  ("signal_EMPTY         ", 1);
30    vhdl->set_signal  ("signal_FULL          ", 1);
31
32    if (_param->_size_queue > 1)
33      {
34    vhdl->set_signal  ("reg_PTR_READ         ", log2(_param->_size_queue));
35    vhdl->set_signal  ("signal_NEXT_PTR_READ ", log2(_param->_size_queue));
36    vhdl->set_signal  ("signal_PTR_READ      ", log2(_param->_size_queue));
37    vhdl->set_signal  ("signal_PTR_WRITE     ", log2(_param->_size_queue));
38      }
39
40    if (_param->_nb_port_slot>1)
41      {
42    vhdl->set_signal  ("reg_NB_ELT           ", log2(_param->_size_queue+1));
43    vhdl->set_signal  ("signal_NEXT_NB_ELT   ", log2(_param->_size_queue+1));
44    for (uint32_t i=0; i<_param->_nb_port_slot; ++i)
45    vhdl->set_signal  ("signal_SLOT_"+toString(i), log2(_param->_size_queue));
46      }
47    else
48      {
49    if (_param->_size_queue > 1)
50      {
51    vhdl->set_signal  ("reg_PTR_WRITE        ", log2(_param->_size_queue));
52    vhdl->set_signal  ("signal_NEXT_PTR_WRITE", log2(_param->_size_queue));
53      }
54    vhdl->set_signal  ("reg_FULL             ", 1);
55    vhdl->set_signal  ("reg_EMPTY            ", 1);
56    vhdl->set_signal  ("signal_NEXT_FULL     ", 1);
57    vhdl->set_signal  ("signal_NEXT_EMPTY    ", 1);
58    vhdl->set_signal  ("signal_PTR_EQUAL     ", 1);
59      }
60
61    if (_param->_size_queue > 1)
62      {
63        vhdl->set_constant("const_PTR_INIT       ", log2(_param->_size_queue), 0);
64        if (is_log2(_param->_size_queue) == false)
65          vhdl->set_constant("const_PTR_MAX        ", log2(_param->_size_queue), _param->_size_queue-1);
66      }
67    log_printf(FUNC,Queue,FUNCTION,"End");
68  };
69
70}; // end namespace queue
71}; // end namespace generic
72}; // end namespace behavioural
73}; // end namespace morpheo             
74#endif
Note: See TracBrowser for help on using the repository browser.