ice40: Pack constants to LCs
Signed-off-by: David Shah <davey1576@gmail.com>
This commit is contained in:
parent
f72807f790
commit
67a5cedbe3
@ -1,3 +1,3 @@
|
||||
read_verilog blinky.v
|
||||
synth_ice40 -nocarry -top blinky
|
||||
write_json blinky.json
|
||||
write_json blinky_nopack.json
|
||||
|
8
ice40/blinky_noyspack.sh
Executable file
8
ice40/blinky_noyspack.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -ex
|
||||
yosys blinky_nopack.ys
|
||||
../nextpnr-ice40 --json blinky_nopack.json --asc blinky.asc --pack
|
||||
icepack blinky.asc blinky.bin
|
||||
icebox_vlog blinky.asc > blinky_chip.v
|
||||
iverilog -o blinky_tb blinky_chip.v blinky_tb.v
|
||||
vvp -N ./blinky_tb
|
@ -1,9 +1,3 @@
|
||||
read_verilog icebreaker.v
|
||||
read_verilog -lib +/ice40/cells_sim.v
|
||||
synth -top icebreaker
|
||||
abc -lut 4
|
||||
techmap -map blinky_map.v
|
||||
splitnets
|
||||
opt_clean
|
||||
stat
|
||||
synth_ice40 -nocarry -top icebreaker
|
||||
write_json icebreaker.json
|
||||
|
@ -89,9 +89,34 @@ static void pack_nonlut_ffs(Design *design)
|
||||
}
|
||||
}
|
||||
|
||||
// Pack constants (simple implementation)
|
||||
static void pack_constants(Design *design) {
|
||||
CellInfo *gnd_cell = create_ice_cell(design, "ICESTORM_LC",
|
||||
"$PACKER_GND");
|
||||
gnd_cell->attrs["LUT_INIT"] = "0";
|
||||
|
||||
CellInfo *vcc_cell = create_ice_cell(design, "ICESTORM_LC",
|
||||
"$PACKER_VCC");
|
||||
vcc_cell->attrs["LUT_INIT"] = "1";
|
||||
|
||||
for (auto net : design->nets) {
|
||||
NetInfo *ni = net.second;
|
||||
if (ni->driver.cell != nullptr && ni->driver.cell->type == "GND") {
|
||||
ni->driver.cell = gnd_cell;
|
||||
ni->driver.port = "O";
|
||||
design->cells[gnd_cell->name] = gnd_cell;
|
||||
} else if (ni->driver.cell != nullptr && ni->driver.cell->type == "VCC") {
|
||||
ni->driver.cell = vcc_cell;
|
||||
ni->driver.port = "O";
|
||||
design->cells[vcc_cell->name] = vcc_cell;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Main pack function
|
||||
void pack_design(Design *design)
|
||||
{
|
||||
pack_constants(design);
|
||||
pack_lut_lutffs(design);
|
||||
pack_nonlut_ffs(design);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user