8c390dd3cfe8c62d04a0e262bd0972e4503693a4
[pinmux.git] / src / interface_decl.py
1 # ========= Interface declarations ================ #
2 mux_interface = '''
3 method Action cell{0}_mux(Bit#({1}) in);'''
4
5 io_interface = '''
6 (*always_ready*) method Bit#(1) io_outputval_{0};
7 (*always_ready*) method Bit#(1) io_output_en_{0};
8 (*always_ready*) method Bit#(1) io_input_en_{0};
9 (*always_ready*) method Bit#(1) io_pullup_en_{0};
10 (*always_ready*) method Bit#(1) io_pulldown_en_{0};
11 (*always_ready*) method Bit#(1) io_drivestrength_{0};
12 (*always_ready*) method Bit#(1) io_pushpull_en_{0};
13 (*always_ready*) method Bit#(1) io_opendrain_en_{0};
14 (*always_ready,always_enabled,result="io"*)
15 method Action io_inputval_{0}(Bit#(1) in);
16 '''
17 # == Peripheral Interface definitions == #
18 # these are the interface of the peripherals to the pin mux
19 # Outputs from the peripherals will be inputs to the pinmux
20 # module. Hence the change in direction for most pins
21
22 uartinterface_decl = '''
23 (*always_ready,always_enabled*) method Action tx_{0}(Bit#(1) in);
24 (*always_ready,always_enabled*) method Bit#(1) rx_{0};
25 '''
26
27 spiinterface_decl = '''
28 (*always_ready,always_enabled*) method Action sclk_{0} (Bit#(1) in);
29 (*always_ready,always_enabled*) method Action mosi_{0} (Bit#(1) in);
30 (*always_ready,always_enabled*) method Action ss_{0} (Bit#(1) in);
31 (*always_ready,always_enabled*) method Bit#(1) miso_{0};
32 '''
33
34 twiinterface_decl = '''
35 (*always_ready,always_enabled*) method Action sda{0}_out (Bit#(1) in);
36 (*always_ready,always_enabled*) method Action sda{0}_outen (Bit#(1) in);
37 (*always_ready,always_enabled*) method Bit#(1) sda{0}_in;
38 (*always_ready,always_enabled*) method Action scl{0}_out (Bit#(1) in);
39 (*always_ready,always_enabled*) method Action scl{0}_outen (Bit#(1) in);
40 (*always_ready,always_enabled*) method Bit#(1) scl{0}_in;
41 '''
42
43 sdinterface_decl = '''
44 (*always_ready,always_enabled*) method Action sd{0}_clk (Bit#(1) in);
45 (*always_ready,always_enabled*) method Action sd{0}_cmd (Bit#(1) in);
46 (*always_ready,always_enabled*) method Action sd{0}_d0_out (Bit#(1) in);
47 (*always_ready,always_enabled*) method Action sd{0}_d0_outen (Bit#(1) in);
48 (*always_ready,always_enabled*) method Bit#(1) sd{0}_d0_in;
49 (*always_ready,always_enabled*) method Action sd{0}_d1_out (Bit#(1) in);
50 (*always_ready,always_enabled*) method Action sd{0}_d1_outen (Bit#(1) in);
51 (*always_ready,always_enabled*) method Bit#(1) sd{0}_d1_in;
52 (*always_ready,always_enabled*) method Action sd{0}_d2_out (Bit#(1) in);
53 (*always_ready,always_enabled*) method Action sd{0}_d2_outen (Bit#(1) in);
54 (*always_ready,always_enabled*) method Bit#(1) sd{0}_d2_in;
55 (*always_ready,always_enabled*) method Action sd{0}_d3_out (Bit#(1) in);
56 (*always_ready,always_enabled*) method Action sd{0}_d3_outen (Bit#(1) in);
57 (*always_ready,always_enabled*) method Bit#(1) sd{0}_d3_in;
58 '''
59 # ======================================= #