set HDL_TOOLTYPE SIMULATION set HDL_TOOLNAME ncsim set HDL_PUTS puts set HDL_MSG_FORMAT "********** %s **********" if {![file exists hdl.var]} { hdl_note "Creating default hdl.var" exec echo "DEFINE WORK work" > hdl.var } if {![file exists cds.lib]} { hdl_note "Creating default cds.lib" exec echo "# This file was created automatically by hdl_ncsim.tcl" > cds.lib exec echo "# You can edit this file" >> cds.lib exec echo "# Please add the libraries that are not handled by hdl_ncsim.tcl" >> cds.lib exec echo "# (for example the Xilinx libraries compiled with compxlib)" >> cds.lib exec echo {INCLUDE ${CDS_INST_DIR}/tools/inca/files/cds.lib} >> cds.lib } proc no_matching_line {pattern file} { return [catch {exec grep -q $pattern $file}] } if {[no_matching_line "^INCLUDE mycds.lib$" cds.lib]} { hdl_note "Including mycds.lib in cds.lib" exec echo "INCLUDE mycds.lib" >> cds.lib } hdl_note "Clean-up mycds.lib" exec echo "# This file is written automatically by hdl_ncsim.tcl" > mycds.lib exec echo "# Do not edit this file" >> mycds.lib exec echo "# It will be overwritten at each compilation" >> mycds.lib proc hdl_tool_library {lib} { set lib [string tolower $lib] set path [get_lib_path]/${lib}_nc exec echo "DEFINE $lib $path" >> mycds.lib exec touch $path exec rm -r $path exec mkdir $path } proc hdl_tool_compile {format version incdirs library define files behavioral} { switch $format { "vhdl" { set command "ncvhdl" if {$version != 87} { lappend command -v93 } # Less strict VHDL for behavioral modules if {$behavioral} { lappend command -relax } } "verilog" { set command "ncvlog" if {$version == "sv"} { lappend command -sv } foreach d $define { lappend command -define $d } foreach i $incdirs { lappend command -incdir $i } } } lappend command -work [string tolower $library] lappend command -nocopyright foreach f $files { lappend command $f } eval $command } # Allow launching NC-Sim tools directly in TCL proc ncvlog { args } { puts -nonewline [eval exec -keepnewline ncvlog $args] } proc ncvhdl { args } { puts -nonewline [eval exec -keepnewline ncvhdl $args] } proc ncelab { args } { puts -nonewline [eval exec -keepnewline ncelab $args] } proc ncsdfc { args } { puts -nonewline [eval exec -keepnewline ncsdfc $args] } proc ncsim { args } { puts -nonewline [eval exec -keepnewline ncsim $args] }