#!/bin/bash set -ex mkdir -p glb_u4k.work cd glb_u4k.work glb_pins="20 35 37 44" for gpin in $glb_pins; do pf="glb_u4k_pin_$gpin" cat > ${pf}.v <<- EOT module top (input clk, data, output pin); wire gc; SB_GB_IO #( .PIN_TYPE(6'b 0000_00), .PULLUP(1'b0), .NEG_TRIGGER(1'b0), .IO_STANDARD("SB_LVCMOS") ) gbuf ( .PACKAGE_PIN(clk), .GLOBAL_BUFFER_OUTPUT(gc) ); SB_IO #( .PIN_TYPE(6'b 0101_00) ) pin_obuf ( .PACKAGE_PIN(pin), .OUTPUT_CLK(gc), .D_OUT_0(data) ); endmodule EOT echo "set_io clk $gpin" > ${pf}.pcf ICEDEV=u4k-sg48 bash ../../icecube.sh ${pf}.v > ${pf}.log 2>&1 ../../../icebox/icebox_explain.py ${pf}.asc > ${pf}.exp rm -rf ${pf}.tmp done oscs="HF LF" for osc in $oscs; do pf="glb_u4k_${osc}" cat > ${pf}.v <<- EOT module top (input data, output pin); wire clk; SB_${osc}OSC osc( .CLK${osc}PU(1'b1), .CLK${osc}EN(1'b1), .CLK${osc}(clk) ); SB_IO #( .PIN_TYPE(6'b 0101_00) ) pin_obuf ( .PACKAGE_PIN(pin), .OUTPUT_CLK(clk), .D_OUT_0(data) ); endmodule EOT ICEDEV=u4k-sg48 bash ../../icecube.sh ${pf}.v > ${pf}.log 2>&1 ../../../icebox/icebox_explain.py ${pf}.asc > ${pf}.exp rm -rf ${pf}.tmp done pf="glb_u4k_gbufin" cat > ${pf}.v <<- EOT module top (input [7:0] clk, data, output [7:0] pin); wire [7:0] gc; SB_GB gbufin[7:0] ( .USER_SIGNAL_TO_GLOBAL_BUFFER(clk), .GLOBAL_BUFFER_OUTPUT(gc) ); SB_IO #( .PIN_TYPE(6'b 0101_00) ) pin_obuf[7:0] ( .PACKAGE_PIN(pin), .OUTPUT_CLK(gc), .D_OUT_0(data) ); endmodule EOT # echo "set_io clk 10" > ${pf}.pcf ICEDEV=u4k-sg48 bash ../../icecube.sh ${pf}.v > ${pf}.log 2>&1 ../../../icebox/icebox_explain.py ${pf}.asc > ${pf}.exp rm -rf ${pf}.tmp