henesyinit from p9f47575dc5 years agoHistory
100 lines · 2.5 KB · Text
RawDownload
BEGIN {	fname = ARGV[1]	if (fname == "/fd/0")		fname = ARGV[2]	split(fname,x,".")	name = x[1]	ipf = name".ipf"	pins = name".pins"	print "DEF "name"." > ipf}/Pin/ {	tran[$2] = $3}/^NET/ {	split($2,x,";")	split(x[1],y,"_")	port = y[1]	clk = substr(port,1,3) == "clk"	if (clk)		next	print $0 > ipf}/ PIN:/ {	split($1,x,":")	i = substr(x[2],1,length(x[2])-1)	# goddam actel#	print $0 > ipf#	print "USE ; "port"; FIX." > ipf	if (!clk)		printf "  PIN:%s,\n  FIX:''.\n",i > ipf	if (pga == 1)		i = tran[i]	pin[port] = i	if (type[port] != "")		tt = substr(tt,1,i-1)""type[port]""substr(tt,i+1,length(tt)-i)}/^use/ {	cell = $2	port = $3	if (cell == "INBUF" || cell == "CLKBUF")		type[port] = "i"	else if (cell == "OUTBUF")		type[port] = "2"	else if (cell == "BIBUF")		type[port] = "3"	else if (cell == "TRIBUFF")		type[port] = "4"}/FAM.*a1200/ {family = 1200}/FAM.*a1000/ {family = 1000}/VAR.*PACK/ {	n = split($4,x,"/")	split(x[n],y,".")	package = toupper(y[1])	print ".t	"name"	"package > pins	if (family == 1000) {		if (package == "LCC68")		# wow, only depends on the package!			tt = "nnnvnnnnn nnnnggnnnnnvnnnvn nnnnngnnnnnvnnnnn nnnnngnnnngvnnnnn nnnnngnn"		else if (package == "LCC84")			tt = "nnnvnnnnnnn nnnnnnggnnnnnvvnnnnnn vnnnnnngnnnnnvnnnnnnn nnnnnnggnnnngvvnnnnnn nnnnnnngnn"		else if (package == "PGA132") {			pga = 1			tt = "gnnnnnnnnnnnn nnnngnnngnnnn nnnngnvngnnnn nnn nvn nnn nngggn nnngnnnn nvvvvvvv nnnnnnng ngggnn nnn nvn ngn nnnngnvngnnnn nnnnnnnngnnnn nnnnnnnnnnnnn"		}	}	else if (family == 1200) {		if (package == "LCC84")			tt = "nnnnngnnnnn gnnnnnnnnnvvnnnngnnnn nnnnnnnnnnvnnnnngnnnn nnnnnnnnngvvnnnngnnnn nnnnnnnnnv"		else if (package == "PGA132") {			pga = 1			tt = "?nnnnnnnnnnnn nnnngnnngnnnn nnnngnvngnnnn nnn nvn nnn nngggn nnngnnnn nvvvvvvv nnnnnnng ngggnn nnn nvn ngn nnnngnvngnnnn nnnnnnnngnnnn nnnnnnnnnnnnn"		}	}	else		print "family non-member"	split(tt,x," ")	tt = x[1]	for (i = 2; x[i] != ""; i++)		tt = tt""x[i]#	tt = x[1]x[2]x[3]x[4]x[5]	# plcc-specific	n = length(tt)	for (i = 1; i <= n; i++)		if (substr(tt,i,1) == "v")			vcc[nv++] = i		else if (substr(tt,i,1) == "g")			gnd[ng++] = i}END {	print "END." > ipf	print ".tt	"tt > pins	printf ".tp	VCC[0-%d]	",nv-1 > pins	for (i in vcc)		printf	"%d ",vcc[i] > pins	printf "\n" > pins	printf ".tp	GND[0-%d]	",ng-1 > pins	for (i in gnd)		printf	"%d ",gnd[i] > pins	printf "\n" > pins	for (i in pin)		print	".tp	"i"	"pin[i] > pins}