MipsTp2: mips_r3000_1m_dp.py

File mips_r3000_1m_dp.py, 20.3 KB (added by cobell, 14 years ago)
Line 
1#!/usr/bin/env python
2
3### -------------------------------------------------------------- ###
4# file    : mips_r3000_dp.py                                         #
5# date    : Jan 04 2010                                              #
6# version : v1                                                       #
7#                                                                    #
8# origin  : this description has been developed at LIP6              #
9#           University Paris 6 - Pierre et Marie Curie               #
10#           4 Place Jussieu 75252 Paris Cedex 05 - France            #
11#                                                                    #
12# descr.  : data flow description of a five stage pipelined Mips     #
13#           R3000 processor                                          #
14#                                                                    #
15# authors : Sophie Belloeil                                          #
16### -------------------------------------------------------------- ###
17
18from stratus import *
19
20class mips_r3000_1m_dp ( Model ) :
21
22  def Interface ( self ) :
23
24    self.INTERACTIVE = self._param['interactive']
25
26    self.ck          = SignalIn  ( "ck",           1 )    # external clock
27   
28    self.i           = SignalIn  ( "i",           32 )    # instruction
29     
30    self.d_in        = SignalIn  ( "d_in",        32 )    # data (input)
31    self.d_out       = SignalOut ( "d_out",       32 )    # data (output)
32                             
33    self.addr        = SignalOut ( "addr",        32 )    # address
34
35    self.rsdnbr_sd   = SignalIn  ( "rsdnbr_sd",   32 )    # source reg nbr
36    self.rtdnbr_sd   = SignalIn  ( "rtdnbr_sd",   32 )    # source reg nbr
37   
38    self.hz_sdm_sd   = SignalIn  ( "hz_sdm_sd",    1 )    # s = d(i-2)
39    self.hz_sdmw_sd  = SignalIn  ( "hz_sdmw_sd",   1 )    # s = d(i-3,i-2)
40    self.hz_tdm_sd   = SignalIn  ( "hz_tdm_sd",    1 )    # t = d(i-2)
41    self.hz_tdmw_sd  = SignalIn  ( "hz_tdmw_sd",   1 )    # t = d(i-3,i-2)
42
43    self.hz_sdm_se   = SignalIn  ( "hz_sdm_se",    1 )    # s = d(i-1)
44    self.hz_sdmw_se  = SignalIn  ( "hz_sdmw_se",   1 )    # s = d(i-2,i-1)
45    self.hz_tdm_se   = SignalIn  ( "hz_tdm_se",    1 )    # t = d(i-1)
46    self.hz_tdmw_se  = SignalIn  ( "hz_tdmw_se",   1 )    # t = d(i-2,i-1)
47                         
48    self.i_jr_sd     = SignalIn  ( "i_jr_sd",      1 )    # jump register
49    self.btaken_sd   = SignalIn  ( "btaken_sd",    1 )    # branch taken
50    self.i_allj_sd   = SignalIn  ( "i_allj_sd",    1 )    # all jumps
51    self.i_link_sd   = SignalIn  ( "i_link_sd",    1 )    # link inst
52                           
53    self.iopsel_sd   = SignalIn  ( "iopsel_sd",    4 )    # i oper select
54                             
55    self.imdsgn_sd   = SignalIn  ( "imdsgn_sd",    1 )    # signed operands
56    self.i_rsgnd_se  = SignalIn  ( "i_rsgnd_se",   1 )    # signed result
57                           
58    self.i_ifmt_se   = SignalIn  ( "i_ifmt_se",    1 )    # i format
59    self.i_oper_se   = SignalIn  ( "i_oper_se",    7 )    # alu operation
60    self.i_logic_se  = SignalIn  ( "i_logic_se",   2 )    # logic operation
61    self.i_sub_se    = SignalIn  ( "i_sub_se",     1 )    # subtract
62    self.i_right_se  = SignalIn  ( "i_right_se",   1 )    # shift right
63                           
64    self.setbit_se   = SignalIn  ( "setbit_se",    1 )    # result for set
65                           
66    self.datext_sm   = SignalIn  ( "datext_sm",    1 )    # data extension
67    self.bytsub_sm   = SignalIn  ( "bytsub_sm",    3, 1 ) # byte substitute
68    self.daccess_sm  = SignalIn  ( "daccess_sm",   1 )    # data access
69    self.read_sm     = SignalIn  ( "read_sm",      1 )    # read operation
70                           
71    self.bubble_si   = SignalIn  ( "bubble_si",    1 )    # introduce  bubble
72    self.hold_si     = SignalIn  ( "hold_si",      1 )    # hold the inst
73    self.nothold_si  = SignalIn  ( "nothold_si",   1 )    # don't hold the inst
74    self.shift_si    = SignalIn  ( "shift_si",     1 )    # shift new inst
75    self.keep_si     = SignalIn  ( "keep_si",      1 )    # keep the data
76    self.load_si     = SignalIn  ( "load_si",      1 )    # load a new data
77                           
78    self.notstall_sd = SignalIn  ( "notstall_sd",  1 )    # don't holdt inst
79    self.bubble_sd   = SignalIn  ( "bubble_sd",    1 )    # introduce bubble
80    self.hold_sd     = SignalIn  ( "hold_sd",      1 )    # hold the inst
81    self.nothold_sd  = SignalIn  ( "nothold_sd",   1 )    # don't hold the inst
82    self.shift_sd    = SignalIn  ( "shift_sd",     1 )    # shift new inst
83    self.keep_sd     = SignalIn  ( "keep_sd",      1 )    # keep the data
84    self.load_sd     = SignalIn  ( "load_sd",      1 )    # load a new data
85                           
86    self.bubble_se   = SignalIn  ( "bubble_se",    1 )    # introduce bubble
87    self.hold_se     = SignalIn  ( "hold_se",      1 )    # hold the inst
88    self.nothold_se  = SignalIn  ( "nothold_se",   1 )    # don't hold the inst
89    self.shift_se    = SignalIn  ( "shift_se",     1 )    # shift new inst
90    self.keep_se     = SignalIn  ( "keep_se",      1 )    # keep the data
91    self.load_se     = SignalIn  ( "load_se",      1 )    # load a new data
92                           
93    self.bubble_sm   = SignalIn  ( "bubble_sm",    1 )    # introduce bubble
94    self.hold_sm     = SignalIn  ( "hold_sm",      1 )    # hold the inst
95    self.nothold_sm  = SignalIn  ( "nothold_sm",   1 )    # don't hold the inst
96    self.shift_sm    = SignalIn  ( "shift_sm",     1 )    # shift new inst
97    self.keep_sm     = SignalIn  ( "keep_sm",      1 )    # keep the data
98    self.load_sm     = SignalIn  ( "load_sm",      1 )    # load a new data
99                           
100    self.wreg_sw     = SignalIn  ( "wreg_sw",     32 )    # integer reg wen
101    self.wredopc_se  = SignalIn  ( "wredopc_se",   1 )    # redopc write en
102                           
103    self.wlo_sw      = SignalIn  ( "wlo_sw",       1 )    # low reg write en
104    self.whi_sw      = SignalIn  ( "whi_sw",       1 )    # high reg write en
105                           
106    self.wepc_xx     = SignalIn  ( "wepc_xx",      1 )    # epc write en
107    self.wepc_xm     = SignalIn  ( "wepc_xm",      1 )    # epc write en
108                           
109    self.bootev_xx   = SignalIn  ( "bootev_xx",    1 )    # bootstrap exc
110                             
111    self.badia_xm    = SignalIn  ( "badia_xm",     1 )    # bad inst adr
112    self.badda_xm    = SignalIn  ( "badda_xm",     1 )    # bad data adr
113                           
114    self.lui_sd      = SignalIn  ( "lui_sd",       1 )    # lui inst
115                           
116    self.shamt_se    = SignalIn  ( "shamt_se",     5 )    # shift amount
117                           
118    self.reset_xx    = SignalIn  ( "reset_xx",     1 )    # synchro reset
119    self.wnxtpc_xx   = SignalIn  ( "wnxtpc_xx",    1 )    # nxt inst ad wen
120                           
121    self.sr_cr_sd    = SignalIn  ( "sr_cr_sd",    32 )    # status/cause
122    self.be_sd       = SignalIn  ( "be_sd",        1 )    # bad ad reg/epc
123    self.scbe_sd     = SignalIn  ( "scbe_sd",      1 )    # c0 reg selection
124                           
125    self.bdslot_se   = SignalIn  ( "bdslot_se",    1 )
126    self.bdslot_sm   = SignalIn  ( "bdslot_sm",    1 )
127                           
128    self.carith_32_se= SignalOut ( "carith_32_se", 1 )
129    self.carith_31_se= SignalOut ( "carith_31_se", 1 )
130    self.rarith_31_se= SignalOut ( "rarith_31_se", 1 )
131    self.nextpc_1_se = SignalOut ( "nextpc_1_se",  1 )
132    self.nextpc_0_se = SignalOut ( "nextpc_0_se",  1 )
133    self.nextpc_31_se= SignalOut ( "nextpc_31_se", 1 )
134                           
135    self.res_sm      = SignalOut ( "res_sm",      32 )
136                           
137    self.s_31_sd     = SignalOut ( "s_31_sd",      1 )    # s (31)
138    self.s_eq_t_sd   = SignalOut ( "s_eq_t_sd",    1 )    # s = t
139    self.s_eq_z_sd   = SignalOut ( "s_eq_z_sd",    1 )    # s = 0
140                           
141    self.s_4_0_se    = SignalOut ( "s_4_0_se",     5 )    # s (4 downto 0)
142                           
143    self.test        = SignalIn  ( "test",         1 )    # test mode
144    self.scin        = SignalIn  ( "scin",         1 )    # scan in
145    self.scout       = SignalOut ( "scout",        1 )    # scan out
146                           
147    self.vdd         = VddIn ( "vdd" )
148    self.vss         = VssIn ( "vss" ) 
149
150  def Netlist (self) :
151    ### Signaux internes ###
152    # A COMPLETER, MODIFIER ... Copie conforme de la liste du fichier vbe la uniquement pour vous faire gagner du temps d'écriture
153    ck_sx       = Signal ( "ck_sx",      1 ) # internal clock
154                                       
155    i_ri        = Signal ( "i_ri",      32 ) # instruction reg
156    i_rd        = Signal ( "i_rd",      32 ) # instruction reg
157    i_re        = Signal ( "i_re",      32 ) # instruction reg
158    i_rm        = Signal ( "i_rm",      32 ) # instruction reg
159                             
160    jadr_sd     = Signal ( "jadr_sd",   32 ) # next inst address
161    badr_sd     = Signal ( "badr_sd",   32 ) # next inst address
162    nextpc_sd   = Signal ( "nextpc_sd", 32 ) # next inst address
163    nextpc_xx   = Signal ( "nextpc_xx", 32 ) # next inst adr (hw)
164    nextpc_rd   = Signal ( "nextpc_rd", 32 ) # next inst address
165    nextpc_re   = Signal ( "nextpc_re", 32 ) # next inst address
166                             
167    pc_ri       = Signal ( "pc_ri",     32 ) # instruction address
168    pc_rd       = Signal ( "pc_rd",     32 ) # instruction address
169    pc_re       = Signal ( "pc_re",     32 ) # instruction address
170    redopc_re   = Signal ( "redopc_re", 32 ) # old inst address
171                             
172    s_sd        = Signal ( "s_sd",      32 ) # s from reg bank
173    s_mw_sd     = Signal ( "s_mw_sd",   32 ) # effective s oper
174    soper_sd    = Signal ( "soper_sd",  32 ) # effective s oper
175    soper_rd    = Signal ( "soper_rd",  32 ) # effective s oper
176                             
177    t_sd        = Signal ( "t_sd",      32 ) # t from reg bank
178    t_mw_sd     = Signal ( "t_mw_sd",   32 ) # effective t oper
179    toper_sd    = Signal ( "toper_sd",  32 ) # effective t oper
180    effto_sd    = Signal ( "effto_sd",  32 ) # effective t oper
181    toper_rd    = Signal ( "toper_rd",  32 ) # effective t oper
182                             
183    s_mw_se     = Signal ( "s_mw_se",   32 ) # s operand
184    soper_se    = Signal ( "soper_se",  32 ) # s operand
185    xarith_se   = Signal ( "xarith_se", 32 ) # x oper for arithm
186
187    t_mw_se     = Signal ( "t_mw_se",   32 ) # t operand
188    toper_se    = Signal ( "toper_se",  32 ) # t operand
189    yarith_se   = Signal ( "yarith_se", 32 ) # y oper for arithm
190                             
191    cop0op_sd   = Signal ( "cop0op_sd", 32 ) # cop 0 source opr
192    br_epc_sd   = Signal ( "br_epc_sd", 32 ) # bad ad reg/epc
193                             
194    otheri_sd   = Signal ( "otheri_sd", 32 ) # immediate oper
195    ioper_sd    = Signal ( "ioper_sd",  32 ) # eff immediate oper
196    ioper_rd    = Signal ( "ioper_rd",  32 ) # eff immediate oper
197                             
198    s_cp_t_sd   = Signal ( "s_cp_t_sd", 32 ) # compare s & t
199                             
200    imdsex_sd   = Signal ( "imdsex_sd", 16 ) # offset extension
201    offset_sd   = Signal ( "offset_sd", 32 ) # address offset
202                             
203    seqadr_sd   = Signal ( "seqadr_sd", 32 ) # sequential inst adr
204    seqcry_sd   = Signal ( "seqcry_sd", 33 ) # carry (+ 4)
205
206    jmpadr_sd   = Signal ( "jmpadr_sd", 32 ) # jump adress
207    braadr_sd   = Signal ( "braadr_sd", 32 ) # branch adress
208    bracry_sd   = Signal ( "bracry_sd", 33 ) # carry (+ offset)
209
210    r1_rw       = Signal ( "r1_rw",     32 ) # integer reg # 1
211    r2_rw       = Signal ( "r2_rw",     32 ) # integer reg # 2
212    r3_rw       = Signal ( "r3_rw",     32 ) # integer reg # 3
213    r4_rw       = Signal ( "r4_rw",     32 ) # integer reg # 4
214    r5_rw       = Signal ( "r5_rw",     32 ) # integer reg # 5
215    r6_rw       = Signal ( "r6_rw",     32 ) # integer reg # 6
216    r7_rw       = Signal ( "r7_rw",     32 ) # integer reg # 7
217    r8_rw       = Signal ( "r8_rw",     32 ) # integer reg # 8
218    r9_rw       = Signal ( "r9_rw",     32 ) # integer reg # 9
219    r10_rw      = Signal ( "r10_rw",    32 ) # integer reg # 10
220    r11_rw      = Signal ( "r11_rw",    32 ) # integer reg # 11
221    r12_rw      = Signal ( "r12_rw",    32 ) # integer reg # 12
222    r13_rw      = Signal ( "r13_rw",    32 ) # integer reg # 13
223    r14_rw      = Signal ( "r14_rw",    32 ) # integer reg # 14
224    r15_rw      = Signal ( "r15_rw",    32 ) # integer reg # 15
225    r16_rw      = Signal ( "r16_rw",    32 ) # integer reg # 16
226    r17_rw      = Signal ( "r17_rw",    32 ) # integer reg # 17
227    r18_rw      = Signal ( "r18_rw",    32 ) # integer reg # 18
228    r19_rw      = Signal ( "r19_rw",    32 ) # integer reg # 19
229    r20_rw      = Signal ( "r20_rw",    32 ) # integer reg # 20
230    r21_rw      = Signal ( "r21_rw",    32 ) # integer reg # 21
231    r22_rw      = Signal ( "r22_rw",    32 ) # integer reg # 22
232    r23_rw      = Signal ( "r23_rw",    32 ) # integer reg # 23
233    r24_rw      = Signal ( "r24_rw",    32 ) # integer reg # 24
234    r25_rw      = Signal ( "r25_rw",    32 ) # integer reg # 25
235    r26_rw      = Signal ( "r26_rw",    32 ) # integer reg # 26
236    r27_rw      = Signal ( "r27_rw",    32 ) # integer reg # 27
237    r28_rw      = Signal ( "r28_rw",    32 ) # integer reg # 28
238    r29_rw      = Signal ( "r29_rw",    32 ) # integer reg # 29
239    r30_rw      = Signal ( "r30_rw",    32 ) # integer reg # 30
240    r31_rw      = Signal ( "r31_rw",    32 ) # integer reg # 31
241    lo_rw       = Signal ( "lo_rw",     32 ) # low register
242    hi_rw       = Signal ( "hi_rw",     32 ) # high register
243    carith_se   = Signal ( "carith_se", 32 ) # carry in arithm
244    rarith_se   = Signal ( "rarith_se", 32 ) # result of arithm
245
246    xoper_se    = Signal ( "xoper_se",  32 ) # effective x operand
247    yoper_se    = Signal ( "yoper_se",  32 ) # effective y operand
248
249    shiftin_se  = Signal ( "shiftin_se", 32 ) # shift in
250    shright_se  = Signal ( "shright_se", 32 ) # right shift result
251    shlieft_se  = Signal ( "shleft_se", 32 ) # left shift result
252    rshift_se   = Signal ( "rshift_se", 32 ) # shifter's result
253
254    and_se      = Signal ( "and_se",    32 ) # logic oper. result
255    or_se       = Signal ( "or_se",     32 ) # logic oper. result
256    xor_se      = Signal ( "xor_se",    32 ) # logic oper. result
257    ornor_se    = Signal ( "ornor_se",  32 ) # logic oper. result
258    andxor_se   = Signal ( "andxor_se", 32 ) # logic oper. result
259    rlogic_se   = Signal ( "rlogic_se", 32 ) # logic oper. result
260   
261    rtest_se    = Signal ( "rtest_se",  32 ) # test oper. result
262
263    ra_rt_se    = Signal ( "ra_rt_se",  32 ) # arith/test result
264    so_to_se    = Signal ( "so_to_se",  32 ) # soper/toper
265    i_s_t_se    = Signal ( "i_s_t_se",  32 ) # ioper/soper/toper
266
267    res_se      = Signal ( "res_se",    32 ) # result out of alu
268    res_re      = Signal ( "res_re",    32 ) # result out of alu
269
270    wdata_re    = Signal ( "wdata_re",  32 ) # data bus output reg
271
272    d_15x_sm    = Signal ( "d_15x_sm",  24, 8 ) # read data
273    d_31x_sm    = Signal ( "d_31x_sm",  24, 8 ) # read data
274    d_ext_sm    = Signal ( "d_ext_sm",  24, 8 ) # read data
275    data_e_sm   = Signal ( "data_e_sm", 32 )    # read data
276    data_o_sm   = Signal ( "data_o_sm", 32 )    # read data
277    data_x_sm   = Signal ( "data_x_sm", 32 )    # read data
278                             
279    reddat_sm   = Signal ( "reddat_sm",  32 ) # aligned data
280                             
281    data_sm     = Signal ( "data_sm",    32 ) # data bus / res
282    data_rm     = Signal ( "data_rm",    32 ) # data bus input reg
283 
284    badvadr_rm  = Signal ( "badvadr_rm", 32 ) # bad virtual adr reg
285                             
286    epc_xx      = Signal ( "epc_xx",     32 ) # exc pg counter
287    epc_xm      = Signal ( "epc_xm",     32 ) # exc pg counter
288    epc_rx      = Signal ( "epc_rx",     32 ) # exc pg counter reg
289
290    r0_rw       = Signal ( "r0_rw",      32 )
291
292    nop_i       = Signal ( "nop_i",      32 ) # addu 0,0,0
293
294    m_writ_w    = Signal ( "m_writ_w",    2 ) # write word
295    m_writ_h    = Signal ( "m_writ_h",    2 ) # write half
296    m_writ_b    = Signal ( "m_writ_b",    2 ) # write bit
297    m_read_b    = Signal ( "m_read_b",    2 ) # read bit
298
299    excphnd_a   = Signal ( "excphnd_a",  32 ) # handler adr
300    boothnd_a   = Signal ( "boothnd_a",  32 ) # handler adr
301    reset_a     = Signal ( "reset_a",    32 ) # reset   adr
302
303    badvaddr_s  = Signal ( "badvaddr_s",  5 ) # badvaddr
304    status_s    = Signal ( "status_s",    5 ) # status
305    cause_s     = Signal ( "cause_s",     5 ) # cause
306    epc_s       = Signal ( "epc_s",       5 ) # epc
307    prid_s      = Signal ( "prid_s",      5 ) # prid
308                                     
309    r_fmt_o     = Signal ( "r_fmt_o",     4 ) # r format
310    i_fmt_o     = Signal ( "i_fmt_o",     4 ) # i format
311    j_fmt_o     = Signal ( "j_fmt_o",     4 ) # j format
312    illgl_o     = Signal ( "illgl_o",     4 ) # illegal ins
313                                     
314    d_use_st_o  = Signal ( "d_use_st_o",  4 ) # dec use st
315    d_use_s_o   = Signal ( "d_use_s_o",   4 ) # dec use s
316    d_use_t_o   = Signal ( "d_use_t_o",   4 ) # dec use t
317    e_use_st_o  = Signal ( "e_use_st_o",  4 ) # exe use st
318    e_use_s_o   = Signal ( "e_use_s_o",   4 ) # exe use s
319    e_use_t_o   = Signal ( "e_use_t_o",   4 ) # exe use  t
320    no_use_o    = Signal ( "no_use_o",    4 ) # no  oper
321   
322    o_signd_o   = Signal ( "o_signd_o",   1 ) # signed
323    o_usign_o   = Signal ( "o_usign_o",   1 ) # unsigned
324   
325    arith_o     = Signal ( "arith_o",     7 ) # arith  oper
326    test_o      = Signal ( "test_o",      7 ) # test   oper
327    logic_o     = Signal ( "logic_o",     7 ) # logic  oper
328    shift_o     = Signal ( "shift_o",     7 ) # shift  oper
329    soper_o     = Signal ( "soper_o",     7 ) # take s oper
330    toper_o     = Signal ( "toper_o",     7 ) # take t oper
331    ioper_o     = Signal ( "ioper_o",     7 ) # take i oper
332                                   
333    add_o       = Signal ( "add_o",       2 ) # add oper
334    sub_o       = Signal ( "sub_o",       2 ) # sub oper
335                                   
336    sleft_o     = Signal ( "sleft_o",     2 ) # shift left
337    sright_o    = Signal ( "sright_o",    2 ) # shift right
338                                   
339    or_o        = Signal ( "or_o",        2 ) # or  oper
340    and_o       = Signal ( "and_o",       2 ) # and oper
341    xor_o       = Signal ( "xor_o",       2 ) # xor oper
342    nor_o       = Signal ( "nor_o",       2 ) # nor oper
343   
344    r_signd_o   = Signal ( "r_signd_o",   1 ) # sign   res
345    r_usign_o   = Signal ( "r_usign_o",   1 ) # unsign res
346   
347    ovr_o       = Signal ( "ovr_o",       1 ) #    overflow
348    nov_o       = Signal ( "nov_o",       1 ) # no overflow
349   
350    e_pdc_rd_o  = Signal ( "e_pdc_rd_o",  3 ) # res out exe
351    e_pdc_31_o  = Signal ( "e_pdc_31_o",  3 ) # res out exe
352    m_pdc_rd_o  = Signal ( "m_pdc_rd_o",  3 ) # res out mem
353    no_pdc_o    = Signal ( "no_pdc_o",    3 ) # no result
354   
355    nobra_o     = Signal ( "nobra_o",     1 ) # no branch
356    brnch_o     = Signal ( "brnch_o",     1 ) # branch
357   
358    loadw_o     = Signal ( "loadw_o", 5 ) # load word
359    loadh_o     = Signal ( "loadh_o", 5 ) # load half
360    loadb_o     = Signal ( "loadb_o", 5 ) # load byte
361    storw_o     = Signal ( "storw_o", 5 ) # store word
362    storh_o     = Signal ( "storh_o", 5 ) # store half
363    storb_o     = Signal ( "storb_o", 5 ) # store byte
364    swapw_o     = Signal ( "swapw_o", 5 ) # swap word
365    nomem_o     = Signal ( "nomem_o", 5 ) # no access 
366
367
368    ### Creation des Generateurs utiles ###
369    # A COMPLETER, MODIFIER ...
370    Generate('DpgenConst', "instnop_i",     param= { 'nbit' : 32, 'const' : "0x00000021" } ) 
371    Generate('DpgenConst', "instexcphnd_a", param= { 'nbit' : 32, 'const' : "0x80000080" } ) 
372    Generate('DpgenConst', "instboothnd_a", param= { 'nbit' : 32, 'const' : "0xbfc00180" } ) 
373    Generate('DpgenConst', "instreset_a",   param= { 'nbit' : 32, 'const' : "0xbfc00000" } ) 
374    Generate("DpgenConst", 'const0000',     param= { 'nbit' : 16, 'const' : "0x0000" } )
375    Generate("DpgenConst", 'const0_2',      param= { 'nbit' :  2, 'const' : "0b00" } )
376    Generate("DpgenConst", 'const4_32',     param= { 'nbit' : 32, 'const' : "0x00000004" } )
377    Generate('DpgenConst', "const0_1",      param= { 'nbit' :  1, 'const' : "0b0" } )
378    Generate('DpgenConst', "const1_1",      param= { 'nbit' :  1, 'const' : "0b1" } )
379    Generate("DpgenConst", 'const0_31',     param= { 'nbit':  31, 'const' : "0b0000000000000000000000000000000" } )
380
381
382    ### Instanciation ###
383    # A FAIRE