#!/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)