Merge remote-tracking branch 'origin/ddr3'
[ls2.git] / simsoc.ys
1 # rad the main peripheral fabric, then uart16550, and finally libresoc core
2 # we do not have to do include the micron ddr3 model or the lattice ecp5
3 # models because apparently they're good to go, already (icarus is a lot
4 # stricter than verilator, hence the munging below)
5
6 # peripheral fabric
7 read_ilang build_simsoc/top.il
8
9 # main core (any core, it's all good)
10 read_verilog ./external_core_top.v
11
12 # UART 16550
13 read_verilog ../uart16550/rtl/verilog/raminfr.v
14 read_verilog ../uart16550/rtl/verilog/uart_defines.v
15 read_verilog ../uart16550/rtl/verilog/uart_rfifo.v
16 read_verilog ../uart16550/rtl/verilog/uart_top.v
17 read_verilog ../uart16550/rtl/verilog/timescale.v
18 read_verilog ../uart16550/rtl/verilog/uart_sync_flops.v
19 read_verilog ../uart16550/rtl/verilog/uart_debug_if.v
20 read_verilog ../uart16550/rtl/verilog/uart_regs.v
21 read_verilog ../uart16550/rtl/verilog/uart_transmitter.v
22 read_verilog ../uart16550/rtl/verilog/uart_receiver.v
23 read_verilog ../uart16550/rtl/verilog/uart_tfifo.v
24 read_verilog ../uart16550/rtl/verilog/uart_wb.v
25
26 # Tercel QSPI
27 read_verilog ../tercel-qspi/tercel/phy.v
28 read_verilog ../tercel-qspi/tercel/wishbone_spi_master.v
29 # WB Async Bridge
30 read_verilog ../verilog-wishbone/rtl/wb_async_reg.v
31 # errors in the ethmac rtl, comment out for now
32 #read_verilog ../ethmac/rtl/verilog/eth_clockgen.v
33 #read_verilog ../ethmac/rtl/verilog/eth_cop.v
34 #read_verilog ../ethmac/rtl/verilog/eth_crc.v
35 #read_verilog ../ethmac/rtl/verilog/eth_fifo.v
36 #read_verilog ../ethmac/rtl/verilog/eth_maccontrol.v
37 #read_verilog ../ethmac/rtl/verilog/ethmac_defines.v
38 #read_verilog ../ethmac/rtl/verilog/eth_macstatus.v
39 #read_verilog ../ethmac/rtl/verilog/ethmac.v
40 #read_verilog ../ethmac/rtl/verilog/eth_miim.v
41 #read_verilog ../ethmac/rtl/verilog/eth_outputcontrol.v
42 #read_verilog ../ethmac/rtl/verilog/eth_random.v
43 #read_verilog ../ethmac/rtl/verilog/eth_receivecontrol.v
44 #read_verilog ../ethmac/rtl/verilog/eth_registers.v
45 #read_verilog ../ethmac/rtl/verilog/eth_register.v
46 #read_verilog ../ethmac/rtl/verilog/eth_rxaddrcheck.v
47 #read_verilog ../ethmac/rtl/verilog/eth_rxcounters.v
48 #read_verilog ../ethmac/rtl/verilog/eth_rxethmac.v
49 #read_verilog ../ethmac/rtl/verilog/eth_rxstatem.v
50 #read_verilog ../ethmac/rtl/verilog/eth_shiftreg.v
51 #read_verilog ../ethmac/rtl/verilog/eth_spram_256x32.v
52 #read_verilog ../ethmac/rtl/verilog/eth_top.v
53 #read_verilog ../ethmac/rtl/verilog/eth_transmitcontrol.v
54 #read_verilog ../ethmac/rtl/verilog/eth_txcounters.v
55 #read_verilog ../ethmac/rtl/verilog/eth_txethmac.v
56 #read_verilog ../ethmac/rtl/verilog/eth_txstatem.v
57 #read_verilog ../ethmac/rtl/verilog/eth_wishbone.v
58 #read_verilog ../ethmac/rtl/verilog/timescale.v
59
60 # stop yosys deleting stuff
61 setattr -mod -set keep 1 uart_transmitter
62 setattr -mod -set keep 1 uart_receiver
63
64 delete w:$verilog_initial_trigger
65
66 # these are most of "proc"
67 proc_prune
68 proc_clean
69 proc_rmdead
70 proc_init
71 proc_arst
72 proc_dlatch
73 proc_dff
74 proc_mux
75 proc_rmdead
76 proc_memwr
77 proc_clean
78 opt_expr -keepdc
79
80 # these are important to do in this order
81 memory_collect
82 pmuxtree
83
84 #opt_mem
85 #opt_mem_priority
86 #opt_mem_feedback
87 #opt_clean
88 extract_fa
89 clean
90 opt
91 clean
92 write_verilog -norename top.v
93 stat