tidyup template
[pinmux.git] / src / bsv / bsv_lib / soc_template.bsv
index 414f14d7727683a801982e39253f1b84021c1533..3fcd2a97c910ce79a9e8d130fd47a85b01030eb2 100644 (file)
@@ -31,6 +31,12 @@ package Soc;
        import slow_peripherals::*;
        `include "defines.bsv"
        `include "instance_defines.bsv"
+{8}
+    /*====== AXI4 slave declarations =======*/
+{3}
+    /*====== AXI4 Master declarations =======*/
+{4}
+
 
                `ifdef DMA
                        import DMA                               :: *;
@@ -75,32 +81,9 @@ package Soc;
                        (*always_ready*) interface Ifc_sdram_out sdram_out; 
                `endif
       `ifdef DDR
-        (*prefix="M_AXI"*) interface AXI4_Master_IFC#(`PADDR, `Reg_width, `USERSPACE) master;
+        (*prefix="M_AXI"*) interface
+                AXI4_Master_IFC#(`PADDR, `Reg_width, `USERSPACE) master;
       `endif
-      `ifdef Debug
-                       (*always_ready,always_enabled*)
-                       method Action tms_i(Bit#(1) tms);
-                       (*always_ready,always_enabled*)
-                       method Action tdi_i(Bit#(1) tdi);
-                       (*always_ready,always_enabled*)
-                       method Action bs_chain_i(Bit#(1) bs_chain);
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) shiftBscan2Edge;
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) selectJtagInput;
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) selectJtagOutput;
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) updateBscan;
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) bscan_in;
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) scan_shift_en;
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) tdo;
-                       (*always_ready,always_enabled*)
-                       method Bit#(1) tdo_oe;
-               `endif
                `ifdef HYPER
                        (*always_ready,always_enabled*) 
                   interface Ifc_flash ifc_flash;
@@ -116,7 +99,8 @@ package Soc;
 {1}
        endinterface
        (*synthesize*)
-       module mkSoc #(Bit#(`VADDR) reset_vector, Clock slow_clock, Reset slow_reset, Clock uart_clock, 
+       module mkSoc #(Bit#(`VADDR) reset_vector,
+                 Clock slow_clock, Reset slow_reset, Clock uart_clock, 
                  Reset uart_reset, Clock clk0, Clock tck, Reset trst
                  `ifdef PWM_AXI4Lite ,Clock ext_pwm_clock `endif )(Ifc_Soc);
                Clock core_clock <-exposeCurrentClock; // slow peripheral clock
@@ -131,25 +115,27 @@ package Soc;
                        BootRom_IFC bootrom <-mkBootRom;
                `endif
                `ifdef SDRAM
-                       Ifc_sdr_slave                   sdram                           <- mksdr_axi4_slave(clk0);
+                       Ifc_sdr_slave sdram<- mksdr_axi4_slave(clk0);
                `endif
     `ifdef BRAM
-                       Memory_IFC#(`SDRAMMemBase,`Addr_space) main_memory <- mkMemory("code.mem.MSB","code.mem.LSB","MainMEM");
+                       Memory_IFC#(`SDRAMMemBase,`Addr_space)main_memory <- 
+                        mkMemory("code.mem.MSB","code.mem.LSB","MainMEM");
                `endif
                `ifdef TCMemory
                        Ifc_TCM                                 tcm                             <- mkTCM;       
                `endif
                `ifdef DMA
-                       DmaC#(7,12)                             dma                             <- mkDMA();
+                       DmaC#(7,`NUM_DMACHANNELS) dma   <- mkDMA();
                `endif
                        `ifdef VME
                        Ifc_vme_top             vme             <-mkvme_top();
                        `endif  
         `ifdef FlexBus
             AXI4_Slave_to_FlexBus_Master_Xactor_IFC #(32, 64,0)
-                                            flexbus <- mkAXI4_Slave_to_FlexBus_Master_Xactor;
+                            flexbus <- mkAXI4_Slave_to_FlexBus_Master_Xactor;
         `endif
-               Ifc_slow_peripherals slow_peripherals <-mkslow_peripherals(core_clock, core_reset, uart_clock, 
+               Ifc_slow_peripherals slow_peripherals <-mkslow_peripherals(
+          core_clock, core_reset, uart_clock, 
           uart_reset, clocked_by slow_clock , reset_by slow_reset 
           `ifdef PWM_AXI4Lite , ext_pwm_clock `endif );        
 
@@ -158,81 +144,88 @@ package Soc;
                                fabric <- mkAXI4_Fabric(fn_addr_to_slave_num);
 
        // Connect traffic generators to fabric
-       mkConnection (core.dmem_master, fabric.v_from_masters [fromInteger(valueOf(Dmem_master_num))]);
-       mkConnection (core.imem_master, fabric.v_from_masters [fromInteger(valueOf(Imem_master_num))]);
+       mkConnection (core.dmem_master,fabric.v_from_masters
+                              [fromInteger(valueOf(Dmem_master_num))]);
+       mkConnection (core.imem_master, fabric.v_from_masters 
+                              [fromInteger(valueOf(Imem_master_num))]);
                `ifdef Debug
-                       mkConnection (core.debug_master, fabric.v_from_masters [fromInteger(valueOf(Debug_master_num))]);
+                       mkConnection (core.debug_master, fabric.v_from_masters 
+                              [fromInteger(valueOf(Debug_master_num))]);
                `endif
                `ifdef DMA
-         mkConnection (dma.mmu, fabric.v_from_masters[fromInteger(valueOf(DMA_master_num))]);
+         mkConnection (dma.mmu, fabric.v_from_masters
+                              [fromInteger(valueOf(DMA_master_num))]);
                `endif
 
 
                // Connect fabric to memory slaves
                        `ifdef Debug
-                               mkConnection (fabric.v_to_slaves [fromInteger(valueOf(Debug_slave_num))],core.debug_slave);
+                               mkConnection (fabric.v_to_slaves 
+                              [fromInteger(valueOf(Debug_slave_num))],
+                              core.debug_slave);
                        `endif
                        `ifdef SDRAM    
-                               mkConnection (fabric.v_to_slaves [fromInteger(valueOf(Sdram_slave_num))],       sdram.axi4_slave_sdram); // 
-                       mkConnection (fabric.v_to_slaves [fromInteger(valueOf(Sdram_cfg_slave_num))],   sdram.axi4_slave_cntrl_reg); // 
+                               mkConnection (fabric.v_to_slaves 
+                              [fromInteger(valueOf(Sdram_slave_num))], 
+                              sdram.axi4_slave_sdram); // 
+                       mkConnection (fabric.v_to_slaves 
+                              [fromInteger(valueOf(Sdram_cfg_slave_num))],
+                              sdram.axi4_slave_cntrl_reg); // 
       `endif
       `ifdef BRAM
-                               mkConnection(fabric.v_to_slaves[fromInteger(valueOf(Sdram_slave_num))],main_memory.axi_slave);
+                               mkConnection(fabric.v_to_slaves
+                              [fromInteger(valueOf(Sdram_slave_num))],
+                              main_memory.axi_slave);
                        `endif
                        `ifdef BOOTROM
-                               mkConnection (fabric.v_to_slaves [fromInteger(valueOf(BootRom_slave_num))],bootrom.axi_slave);
+                               mkConnection (fabric.v_to_slaves 
+                              [fromInteger(valueOf(BootRom_slave_num))],
+                              bootrom.axi_slave);
                        `endif
                        `ifdef DMA
-                       mkConnection (fabric.v_to_slaves [fromInteger(valueOf(Dma_slave_num))], dma.cfg); //DMA slave
+                       mkConnection (fabric.v_to_slaves 
+                              [fromInteger(valueOf(Dma_slave_num))],   
+                              dma.cfg); //DMA slave
                        `endif
                        `ifdef TCMemory
-                               mkConnection (fabric.v_to_slaves [fromInteger(valueOf(TCM_slave_num))],tcm.axi_slave);
+                               mkConnection (fabric.v_to_slaves 
+                              [fromInteger(valueOf(TCM_slave_num))],
+                              tcm.axi_slave);
                        `endif
-                       mkConnection(fabric.v_to_slaves [fromInteger(valueOf(SlowPeripheral_slave_num))],slow_peripherals.axi_slave);
+                       mkConnection(fabric.v_to_slaves 
+                              [fromInteger(valueOf(SlowPeripheral_slave_num))],
+                              slow_peripherals.axi_slave);
                        `ifdef VME
-                               mkConnection (fabric.v_to_slaves[fromInteger(valueOf(VME_slave_num))],vme.slave_axi_vme);
+                               mkConnection (fabric.v_to_slaves
+                              [fromInteger(valueOf(VME_slave_num))],
+                              vme.slave_axi_vme);
                        `endif
                        `ifdef FlexBus
-                               mkConnection (fabric.v_to_slaves[fromInteger(valueOf(FlexBus_slave_num))],flexbus.axi_side);
+                               mkConnection (fabric.v_to_slaves
+                              [fromInteger(valueOf(FlexBus_slave_num))],
+                              flexbus.axi_side);
                        `endif
+
+// fabric connections
+{5}
+
                        `ifdef DMA
-                       //rule to connect all interrupt lines to the DMA
-                       //All the interrupt lines to DMA are active HIGH. For peripherals that are not connected, or those which do not
-                       //generate an interrupt (like TCM), drive a constant 1 on the corresponding interrupt line.
-                               `ifdef I2C1 SyncBitIfc#(Bit#(1)) i2c1_interrupt <-mkSyncBitToCC(slow_clock,slow_reset); `endif
-                               `ifdef I2C0 SyncBitIfc#(Bit#(1)) i2c0_interrupt <-mkSyncBitToCC(slow_clock,slow_reset); `endif
-                               `ifdef QSPI1 SyncBitIfc#(Bit#(1)) qspi1_interrupt <-mkSyncBitToCC(slow_clock,slow_reset); `endif
-                               `ifdef QSPI0 SyncBitIfc#(Bit#(1)) qspi0_interrupt <-mkSyncBitToCC(slow_clock,slow_reset); `endif
-                               `ifdef UART0 SyncBitIfc#(Bit#(1)) uart0_interrupt <-mkSyncBitToCC(uart_clock,uart_reset); `endif
-                               rule synchronize_i2c_interrupts;
-                                       `ifdef I2C1 i2c1_interrupt.send(slow_peripherals.i2c1_isint); `endif
-                                       `ifdef I2C0 i2c0_interrupt.send(slow_peripherals.i2c0_isint); `endif
-                               endrule
-                               rule synchronize_qspi_interrupts;
-                                       `ifdef QSPI0 qspi0_interrupt.send(slow_peripherals.qspi0_isint); `endif
-                                       `ifdef QSPI1 qspi1_interrupt.send(slow_peripherals.qspi1_isint); `endif
-                               endrule
-                               rule synchronize_uart0_interrupt;
-                                       `ifdef UART0 uart0_interrupt.send(slow_peripherals.uart0_intr); `endif
-                               endrule
-                               rule rl_connect_interrupt_to_DMA;
-                                       Bit#(12) lv_interrupt_to_DMA= {{'d-1, 
-                                                                                                                       `ifdef I2C1 i2c1_interrupt.read `else 1'b1 `endif , 
-                                                                                                                       `ifdef I2C0 i2c0_interrupt.read `else 1'b1 `endif , 
-                                                                                                                       `ifdef QSPI1 qspi1_interrupt.read `else 1'b1 `endif ,
-                                                                                                                       1'b1, 
-                                                                                                                       `ifdef QSPI0 qspi0_interrupt.read `else 1'b1 `endif , 
-                                                                                                                       1'b1,1'b0, 
-                                                                                                                       `ifdef UART0 uart0_interrupt.read `else 1'b1 `endif }};
-                                       dma.interrupt_from_peripherals(lv_interrupt_to_DMA);
-                               endrule
+                       // rule to connect all interrupt lines to the DMA
+                       // All the interrupt lines to DMA are active
+                       // HIGH. For peripherals that are not connected,
+                       // or those which do not
+                       // generate an interrupt (like TCM), drive a constant 1 
+            // on the corresponding interrupt line.
+{7}
                        `endif
 
 
-               /*======= Synchornization between the JTAG and the Debug Module ========= */
+               /*==== Synchornization between the JTAG and the Debug Module ===== */
                `ifdef Debug
-                       SyncFIFOIfc#(Bit#(40)) sync_request_to_dm <-mkSyncFIFOToCC(1,tck,trst);
-                       SyncFIFOIfc#(Bit#(34)) sync_response_from_dm <-mkSyncFIFOFromCC(1,tck);
+                       SyncFIFOIfc#(Bit#(40)) sync_request_to_dm <-
+                                        mkSyncFIFOToCC(1,tck,trst);
+                       SyncFIFOIfc#(Bit#(34)) sync_response_from_dm <-
+                                        mkSyncFIFOFromCC(1,tck);
                        rule connect_tap_request_to_syncfifo;
                                let x<-tap.request_to_dm;
                                sync_request_to_dm.enq(x);
@@ -251,7 +244,7 @@ package Soc;
                                tap.response_from_dm(sync_response_from_dm.first);
                        endrule
                `endif
-               /*======================================================================= */
+               /*============================================================ */
        
         `ifdef FlexBus
             //rule drive_flexbus_inputs;
@@ -261,9 +254,12 @@ package Soc;
          `endif
 
                `ifdef CLINT
-                       SyncBitIfc#(Bit#(1)) clint_mtip_int <-mkSyncBitToCC(slow_clock,slow_reset);
-                       SyncBitIfc#(Bit#(1)) clint_msip_int <-mkSyncBitToCC(slow_clock,slow_reset);
-                       Reg#(Bit#(`Reg_width)) clint_mtime_value <-mkSyncRegToCC(0,slow_clock,slow_reset);
+                       SyncBitIfc#(Bit#(1)) clint_mtip_int <-
+                                        mkSyncBitToCC(slow_clock,slow_reset);
+                       SyncBitIfc#(Bit#(1)) clint_msip_int <-
+                                        mkSyncBitToCC(slow_clock,slow_reset);
+                       Reg#(Bit#(`Reg_width)) clint_mtime_value <-
+                                        mkSyncRegToCC(0,slow_clock,slow_reset);
                        rule synchronize_clint_data;
                                clint_mtip_int.send(slow_peripherals.mtip_int);
                                clint_msip_int.send(slow_peripherals.msip_int);
@@ -276,7 +272,9 @@ package Soc;
                        endrule
                `endif
                `ifdef PLIC
-                       Reg#(Tuple2#(Bool,Bool)) plic_interrupt_note <-mkSyncRegToCC(tuple2(False,False),slow_clock,slow_reset);
+                       Reg#(Tuple2#(Bool,Bool)) plic_interrupt_note <-
+                                        mkSyncRegToCC(tuple2(False,False),
+                                                      slow_clock,slow_reset);
                        rule synchronize_interrupts;
                                let note <- slow_peripherals.intrpt_note;
                                plic_interrupt_note<=note;
@@ -293,33 +291,16 @@ package Soc;
                `ifdef FlexBus
             interface flexbus_out = flexbus.flexbus_side;
                `endif 
-      method Action boot_sequence(Bit#(1) bootseq) = core.boot_sequence(bootseq);
+      method Action boot_sequence(Bit#(1) bootseq) = 
+                            core.boot_sequence(bootseq);
                `ifdef SDRAM
                        interface sdram_out=sdram.ifc_sdram_out;
                `endif
     `ifdef DDR
-      interface master=fabric.v_to_slaves[fromInteger(valueOf(Sdram_slave_num))];
+      interface master=fabric.v_to_slaves
+                            [fromInteger(valueOf(Sdram_slave_num))];
     `endif
-               `ifdef Debug
-                       method Action tms_i(Bit#(1) tms);
-                               tap.tms_i(tms);
-                       endmethod
-                       method Action tdi_i(Bit#(1) tdi);
-                               tap.tdi_i(tdi);
-                       endmethod
-                       method Action bs_chain_i(Bit#(1) bs_chain);
-                               tap.bs_chain_i(bs_chain);
-                       endmethod
-                       method Bit#(1) shiftBscan2Edge=tap.shiftBscan2Edge;
-                       method Bit#(1) selectJtagInput=tap.selectJtagInput;
-                       method Bit#(1) selectJtagOutput=tap.selectJtagOutput;
-                       method Bit#(1) updateBscan=tap.updateBscan;
-                       method Bit#(1) bscan_in=tap.bscan_in;
-            method Bit#(1) scan_shift_en=tap.scan_shift_en;
-                       method Bit#(1) tdo=tap.tdo;
-                       method Bit#(1) tdo_oe=tap.tdo_oe;
-               `endif
                interface slow_ios=slow_peripherals.slow_ios;
-
+{6}
        endmodule
 endpackage