add jtag interface decl
[pinmux.git] / src / bsv / peripheral_gen / jtag.py
1 from bsv.peripheral_gen.base import PBase
2
3
4 class jtag(PBase):
5
6 def slowimport(self):
7 return " import jtagtdm::*;\n"
8
9 def fastifdecl(self, name, count):
10 # YUK!
11 template = """ \
12 (*always_ready,always_enabled*) method Action tms_i(Bit#(1) tms);
13 (*always_ready,always_enabled*) method Action tdi_i(Bit#(1) tdi);
14 (*always_ready,always_enabled*)
15 method Action bs_chain_i(Bit#(1) bs_chain);
16 (*always_ready,always_enabled*) method Bit#(1) shiftBscan2Edge;
17 (*always_ready,always_enabled*) method Bit#(1) selectJtagInput;
18 (*always_ready,always_enabled*) method Bit#(1) selectJtagOutput;
19 (*always_ready,always_enabled*) method Bit#(1) updateBscan;
20 (*always_ready,always_enabled*) method Bit#(1) bscan_in;
21 (*always_ready,always_enabled*) method Bit#(1) scan_shift_en;
22 (*always_ready,always_enabled*) method Bit#(1) tdo;
23 (*always_ready,always_enabled*) method Bit#(1) tdo_oe;
24 """
25 return template
26
27 def mkfast_peripheral(self):
28 return """\
29 Ifc_jtagdtm jtag{0} <-mkjtagdtm(clocked_by tck, reset_by trst);
30 rule drive_tmp_scan_outs;
31 jtag{0}.scan_out_1_i(1'b0);
32 jtag{0}.scan_out_2_i(1'b0);
33 jtag{0}.scan_out_3_i(1'b0);
34 jtag{0}.scan_out_4_i(1'b0);
35 jtag{0}.scan_out_5_i(1'b0);
36 endrule
37 """
38 def axi_slave_name(self, name, ifacenum, typ=''):
39 return ''
40
41 def axi_slave_idx(self, idx, name, ifacenum, typ):
42 return ('', 0)
43
44 def axi_addr_map(self, name, ifacenum):
45 return ''