mirror of https://github.com/YosysHQ/icestorm.git
76 lines
1.8 KiB
Python
Executable File
76 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os, sys
|
|
|
|
device = "u4k"
|
|
|
|
if not os.path.exists("./work_osc"):
|
|
os.mkdir("./work_osc")
|
|
|
|
def run(route_fabric):
|
|
name = "./work_osc/osc_cbit_fabric_%d" % route_fabric
|
|
with open(name+'.v',"w") as f:
|
|
print("""
|
|
module top(
|
|
input clkhfpu,
|
|
input clkhfen,
|
|
input clklfpu,
|
|
input clklfen,
|
|
output pin,
|
|
output pin2,
|
|
input data
|
|
);
|
|
|
|
wire clkhf;
|
|
SB_HFOSC #(
|
|
.CLKHF_DIV("%s")
|
|
) hfosc (
|
|
.CLKHFPU(clkhfpu),
|
|
.CLKHFEN(clkhfen),
|
|
.CLKHF(clkhf)
|
|
); /* synthesis ROUTE_THROUGH_FABRIC = %d */
|
|
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0101_00)
|
|
) pin_obuf (
|
|
.PACKAGE_PIN(pin),
|
|
.OUTPUT_CLK(clkhf),
|
|
.D_OUT_0(data)
|
|
);
|
|
|
|
wire clklf;
|
|
SB_LFOSC lfosc (
|
|
.CLKLFPU(clklfpu),
|
|
.CLKLFEN(clklfen),
|
|
.CLKLF(clklf)
|
|
); /* synthesis ROUTE_THROUGH_FABRIC = %d */
|
|
|
|
SB_IO #(
|
|
.PIN_TYPE(6'b 0101_00)
|
|
) pin2_obuf (
|
|
.PACKAGE_PIN(pin2),
|
|
.OUTPUT_CLK(clklf),
|
|
.D_OUT_0(data)
|
|
);
|
|
|
|
endmodule
|
|
""" % (
|
|
"0b11", route_fabric, route_fabric
|
|
), file=f)
|
|
|
|
retval = os.system("bash ../../icecube.sh -" + device + " " + name+".v > ./work_osc/icecube.log 2>&1")
|
|
if retval != 0:
|
|
sys.stderr.write('ERROR: icecube returned non-zero error code\n')
|
|
sys.exit(1)
|
|
retval = os.system("../../../icebox/icebox_explain.py " + name+".asc > " + name+".exp")
|
|
if retval != 0:
|
|
sys.stderr.write('ERROR: icebox_explain returned non-zero error code\n')
|
|
sys.exit(1)
|
|
retval = os.system("../../../icebox/icebox_vlog.py " + name+".asc > " + name+".ve")
|
|
if retval != 0:
|
|
sys.stderr.write('ERROR: icebox_vlog returned non-zero error code\n')
|
|
sys.exit(1)
|
|
|
|
run(0)
|
|
run(1)
|