mirror of
https://github.com/lcbcFoo/ReonV.git
synced 2025-04-18 18:44:43 -04:00
181 lines
5.4 KiB
Tcl
181 lines
5.4 KiB
Tcl
set TOP_npl_contents ""
|
|
set TOP_synplify_npl_contents ""
|
|
set tmp_npl_contents ""
|
|
proc create_xlnx_top {} {
|
|
global TOP TECHNOLOGY PART SPEED PACKAGE GRLIB
|
|
upvar TOP_npl_contents tnc
|
|
upvar TOP_synplify_npl_contents tsnc
|
|
set temp "JDF G\n"
|
|
append temp "PROJECT $TOP\n"
|
|
append temp "DESIGN $TOP\n"
|
|
append temp "DEVFAM $TECHNOLOGY\n"
|
|
append temp "DEVICE $PART\n"
|
|
append temp "DEVSPEED $SPEED\n"
|
|
append temp "DEVPKG $PACKAGE\n"
|
|
append tnc $temp
|
|
append tsnc $temp
|
|
append tnc "DEVTOPLEVELMODULETYPE HDL\n"
|
|
append tsnc "DEVTOPLEVELMODULETYPE EDIF\n"
|
|
set readfile [open "$GRLIB/bin/def.npl" r]
|
|
set readinfo [read $readfile]
|
|
append tsnc $readinfo
|
|
set readinfo [rmvlinebreak $readinfo]
|
|
append tnc $readinfo
|
|
return
|
|
}
|
|
|
|
proc append_lib_xlnx_top {k kinfo} {
|
|
upvar tmp_npl_contents mnc
|
|
global XSTLIBSKIP
|
|
set bn [dict get $kinfo bn]
|
|
if {[lsearch $XSTLIBSKIP $bn] < 0 } {
|
|
append mnc "SUBLIB $bn VhdlLibrary vhdl\n"
|
|
}
|
|
return
|
|
}
|
|
|
|
proc append_file_xlnx_top {f finfo} {
|
|
set i [dict get $finfo i]
|
|
set bn [dict get $finfo bn]
|
|
switch $i {
|
|
"vhdlp1735" {
|
|
return
|
|
}
|
|
"vhdlmtie" {
|
|
return
|
|
}
|
|
"vhdlsynpe" {
|
|
return
|
|
}
|
|
"vhdldce" {
|
|
return
|
|
}
|
|
"vhdlcdse" {
|
|
return
|
|
}
|
|
"vhdlxile" {
|
|
upvar tmp_npl_contents mnc
|
|
append mnc "LIBFILE $f $bn vhdl\n"
|
|
return
|
|
}
|
|
"vhdlfpro" {
|
|
return
|
|
}
|
|
"vhdlprec" {
|
|
return
|
|
}
|
|
"vhdlsyn" {
|
|
upvar tmp_npl_contents mnc
|
|
set l [dict get $finfo l]
|
|
set q [dict get $finfo q]
|
|
if {[string equal $l "local"] && [string equal $bn "work"] } {
|
|
global XSTLIBSKIP XSTDIRSKIP XSTSKIP
|
|
if {[lsearchmatch $XSTLIBSKIP $bn] < 0 && [lsearchmatch $XSTDIRSKIP $l] < 0 && [lsearchmatch $XSTSKIP $q] < 0 } {
|
|
set temp "SOURCE $f\n"
|
|
append temp $mnc
|
|
set mnc $temp
|
|
}
|
|
} else {
|
|
global XSTLIBSKIP XSTDIRSKIP XSTSKIP
|
|
set l [dict get $finfo l]
|
|
set q [dict get $finfo q]
|
|
if {[lsearchmatch $XSTLIBSKIP $bn] < 0 && [lsearchmatch $XSTDIRSKIP $l] < 0 && [lsearchmatch $XSTSKIP $q] < 0 } {
|
|
append mnc "LIBFILE $f $bn vhdl\n"
|
|
}
|
|
}
|
|
return
|
|
}
|
|
"vlogsyn" {
|
|
set l [dict get $finfo l]
|
|
if {[string equal $l "local"] && [string equal $bn "work"] } {
|
|
} else {
|
|
upvar tmp_npl_contents mnc
|
|
global XSTLIBSKIP XSTDIRSKIP XSTSKIP
|
|
set l [dict get $finfo l]
|
|
set q [dict get $finfo q]
|
|
if {[lsearchmatch $XSTLIBSKIP $bn] < 0 && [lsearchmatch $XSTDIRSKIP $l] < 0 && [lsearchmatch $XSTSKIP $q] < 0 } {
|
|
append mnc "LIBFILE $f $bn verilog\n"
|
|
}
|
|
}
|
|
return
|
|
}
|
|
"svlogsyn" {
|
|
upvar tmp_npl_contents mnc
|
|
global XSTLIBSKIP XSTDIRSKIP XSTSKIP
|
|
set l [dict get $finfo l]
|
|
set q [dict get $finfo q]
|
|
if {[lsearchmatch $XSTLIBSKIP $bn] < 0 && [lsearchmatch $XSTDIRSKIP $l] < 0 && [lsearchmatch $XSTSKIP $q] < 0 } {
|
|
append mnc "LIBFILE $f $bn verilog\n"
|
|
}
|
|
return
|
|
}
|
|
"vhdlsim" {
|
|
return
|
|
}
|
|
"vlogsim" {
|
|
return
|
|
}
|
|
"svlogsim" {
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
proc eof_xlnx_top {} {
|
|
global TOP UCF TECHNOLOGY GRLIB NETLISTTECH OS
|
|
upvar TOP_npl_contents tnc
|
|
upvar TOP_synplify_npl_contents tsnc
|
|
upvar tmp_npl_contents mnc
|
|
append tnc "\n"
|
|
append tnc $mnc
|
|
append tnc "DEPASSOC $TOP $UCF\n"
|
|
append tnc "\[Normal\]\n"
|
|
append tnc "_SynthFsmEncode=xstvhd, $TECHNOLOGY, VHDL.t_synthesize, 1102507235, None\n"
|
|
append tnc "p_xstBusDelimiter=xstvhd, $TECHNOLOGY, VHDL.t_synthesize, 1102507235, ()\n"
|
|
append tnc "xilxMapAllowLogicOpt=xstvhd, $TECHNOLOGY, VHDL.t_placeAndRouteDes, 1102861051, True\n"
|
|
append tnc "xilxMapCoverMode=xstvhd, $TECHNOLOGY, VHDL.t_placeAndRouteDes, 1102861051, Speed\n"
|
|
append tnc "xilxMapTimingDrivenPacking=xstvhd, $TECHNOLOGY, VHDL.t_placeAndRouteDes, 1102861051, True\n"
|
|
append tnc "xilxNgdbld_AUL=xstvhd, $TECHNOLOGY, VHDL.t_placeAndRouteDes, 1102861051, True\n"
|
|
append tnc "xilxNgdbldMacro=xstvhd, $TECHNOLOGY, VHDL.t_ngdbuild, 1105377047, $GRLIB/netlists/xilinx/$NETLISTTECH\n"
|
|
append tnc "xilxPAReffortLevel=xstvhd, $TECHNOLOGY, VHDL.t_placeAndRouteDes, 1102861051, Medium\n"
|
|
|
|
set wininfo [rmvlinebreak [string map {/ \\} $tnc] ]
|
|
set winfile [open "$TOP\_win32.npl" w]
|
|
puts $winfile $wininfo
|
|
close $winfile
|
|
if {![string equal -nocase [exec uname] "Linux"] && ![string equal -nocase [exec uname] "SunOs"]} {
|
|
set tnc $wininfo
|
|
}
|
|
append tnc "\[STRATEGY-LIST\]\n"
|
|
append tnc "Normal=True\n"
|
|
append tnc "DEVSYNTHESISTOOL XST (VHDL/Verilog)"
|
|
set nplfile [open "$TOP.npl" w]
|
|
puts $nplfile $tnc
|
|
close $nplfile
|
|
|
|
append tsnc "SOURCE synplify/$TOP.edf\n"
|
|
append tsnc "DEPASSOC $TOP $UCF\n"
|
|
append tsnc "\[Normal\]\n"
|
|
append tsnc "xilxMapAllowLogicOpt=edif, $TECHNOLOGY, EDIF.t_placeAndRouteDes, 1102861051, True\n"
|
|
append tsnc "xilxMapCoverMode=edif, $TECHNOLOGY, EDIF.t_placeAndRouteDes, 1102861051, Speed\n"
|
|
append tsnc "xilxNgdbld_AUL=edif, $TECHNOLOGY, EDIF.t_placeAndRouteDes, 1102861051, True\n"
|
|
append tsnc "xilxPAReffortLevel=edif, $TECHNOLOGY, EDIF.t_placeAndRouteDes, 1102861051, Medium\n"
|
|
append tsnc "xilxNgdbldMacro=edif, $TECHNOLOGY, EDIF.t_placeAndRouteDes, 1105378344, $GRLIB/netlists/xilinx/$NETLISTTECH\n"
|
|
|
|
set wininfo [rmvlinebreak [string map {/ \\} $tsnc] ]
|
|
set winfile [open "$TOP\_synplify_win32.npl" w]
|
|
puts $winfile $wininfo
|
|
close $winfile
|
|
|
|
if {![string equal -nocase [exec uname] "Linux"] && ![string equal -nocase [exec uname] "SunOs"]} {
|
|
set tsnc $wininfo
|
|
}
|
|
|
|
append tsnc "\[STRATEGY-LIST\]\n"
|
|
append tsnc "Normal=True"
|
|
set synpfile [open "$TOP\_synplify.npl" w]
|
|
puts $synpfile $tsnc
|
|
close $synpfile
|
|
return
|
|
}
|