X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fbsv%2Fbsv_lib%2Fsoc_template.bsv;h=cd2fcefb7066beb3d48502d4d09aba337fbe83d9;hb=aeac06c9f7dd07b3fbe7c236c5eefd76c7782ab6;hp=166ba811c7e1bcdb2aadee6a16cb850352308283;hpb=c23d40e0ba022044de89ead526fd30070bef94a1;p=pinmux.git diff --git a/src/bsv/bsv_lib/soc_template.bsv b/src/bsv/bsv_lib/soc_template.bsv index 166ba81..cd2fcef 100644 --- a/src/bsv/bsv_lib/soc_template.bsv +++ b/src/bsv/bsv_lib/soc_template.bsv @@ -40,12 +40,15 @@ package socgen; import Clocks::*; /*=== Project imports === */ + import ifc_sync:: *; import ConcatReg::*; import AXI4_Types::*; import AXI4_Fabric::*; import defined_types::*; import MemoryMap :: *; import slow_peripherals::*; + import fast_memory_map::*; + import slow_memory_map::*; `ifdef DEBUG `include "defines.bsv" `endif @@ -59,9 +62,6 @@ package socgen; `ifdef BOOTROM import BootRom ::*; `endif - `ifdef SDRAM - import sdr_top :: *; - `endif `ifdef BRAM import Memory_AXI4 ::*; `endif @@ -80,23 +80,18 @@ package socgen; `ifdef VME import vme_master::*; `endif - `ifdef FlexBus - import FlexBus_Types::*; - `endif {0} /*========================= */ interface Ifc_Soc; - interface SP_ios slow_ios; + interface SP_dedicated_ios slow_ios; + interface IOCellSide iocell_side; (*always_ready,always_enabled*) method Action boot_sequence(Bit#(1) bootseq); - `ifdef SDRAM - (*always_ready*) interface Ifc_sdram_out sdram_out; - `endif `ifdef DDR (*prefix="M_AXI"*) interface - AXI4_Master_IFC#(`ADDR, `DATA, `USERSPACE) master; + AXI4_Master_IFC#(`PADDR, `DATA, `USERSPACE) master; `endif `ifdef HYPER (*always_ready,always_enabled*) @@ -115,7 +110,7 @@ package socgen; (*synthesize*) module mkSoc #(Bit#(`VADDR) reset_vector, Clock slow_clock, Reset slow_reset, Clock uart_clock, - Reset uart_reset, Clock clk0, Clock tck, Reset trst + Reset uart_reset, Clock clk0, Reset rst0, Clock tck, Reset trst `ifdef PWM_AXI4Lite ,Clock ext_pwm_clock `endif )(Ifc_Soc); Clock core_clock <-exposeCurrentClock; // slow peripheral clock Reset core_reset <-exposeCurrentReset; // slow peripheral reset @@ -128,9 +123,6 @@ package socgen; `ifdef BOOTROM BootRom_IFC bootrom <-mkBootRom; `endif - `ifdef SDRAM - 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"); @@ -145,14 +137,17 @@ package socgen; Ifc_vme_top vme <-mkvme_top(); `endif Ifc_slow_peripherals slow_peripherals <-mkslow_peripherals( - core_clock, core_reset, uart_clock, - uart_reset, clocked_by slow_clock , - reset_by slow_reset + core_clock, core_reset, + uart_clock, uart_reset, + clocked_by slow_clock, reset_by slow_reset `ifdef PWM_AXI4Lite , ext_pwm_clock `endif ); + // clock sync mkConnections +{12} + // Fabric AXI4_Fabric_IFC #(Num_Masters, Num_Fast_Slaves, - `ADDR, `DATA,`USERSPACE) + `PADDR, `DATA,`USERSPACE) fabric <- mkAXI4_Fabric(fn_addr_to_slave_num); // Connect traffic generators to fabric @@ -168,6 +163,7 @@ package socgen; mkConnection (dma.mmu, fabric.v_from_masters [fromInteger(valueOf(DMA_master_num))]); `endif +{13} // Connect fabric to memory slaves @@ -176,14 +172,6 @@ package socgen; [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); // - `endif `ifdef BRAM mkConnection(fabric.v_to_slaves [fromInteger(valueOf(Sdram_slave_num))], @@ -300,14 +288,13 @@ package socgen; `endif 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))]; `endif - interface slow_ios=slow_peripherals.slow_ios; + interface slow_ios = slow_peripherals.slow_ios; + interface iocell_side = slow_peripherals.iocell_side; + {6} endmodule endpackage