MaratZuev 0 24 сентября, 2021 Опубликовано 24 сентября, 2021 · Жалоба Всем добра. Хочу передавать изменяющееся в TCL значение в симулируемый посредством Mentor-а HDL. Запускаю simulate.bat set Mentor="c:\MentorGraphics\QuestaSim64_2020.1\win64\questasim.exe" start "" %Mentor% -do "source simulate.tcl" где simulate.tcl выглядит так source compilation.tcl variable testbench tb variable library work if [file exists $library] { vdel -all } vlib $library variable DirectoriesList [pwd] variable Extension2Compile sv variable Keys "+define+TEST_NUMBER=3" if {[compilation $DirectoriesList $Extension2Compile $Keys]} { vsim -L work work.$testbench run 100ns } else { puts "Error compiling files!" } compilation.tcl, в свою очередь, так: Spoiler proc compilation {DirectoriesList Extension2Compile Keys} { variable Failure 0 variable Success 1 variable DirectoriesListNum [llength $DirectoriesList] puts "DirectoriesListNum == $DirectoriesListNum" if { $DirectoriesListNum == 0} { puts "No directories to compile!" return $Failure } for {set i 0} {$i < $DirectoriesListNum} {incr i} { variable CurrDirectoryPath [lindex $DirectoriesList $i] puts "CurrDirectoryPath == $CurrDirectoryPath at lindex = $i" variable FilesOfCurrDirCompiled $Failure variable FilesOfCurrDir2Compile [glob -nocomplain $CurrDirectoryPath/*.$Extension2Compile] if [llength $FilesOfCurrDir2Compile] { vlog +acc $Keys $CurrDirectoryPath/*.$Extension2Compile variable FilesOfCurrDirCompiled $Success } puts "FilesOfCurrDirCompiled = $FilesOfCurrDirCompiled" if {$FilesOfCurrDirCompiled == $Failure} { puts "failure" return $Failure } else { puts "success" } } return $Success } итоговый transcript выглядит так: # Reading pref.tcl # // Questa Sim-64 # // Version 2020.1 win64 Jan 28 2020 # // # // Copyright 1991-2020 Mentor Graphics Corporation # // All Rights Reserved. # // # // QuestaSim and its associated documentation contain trade # // secrets and commercial or financial information that are the property of # // Mentor Graphics Corporation and are privileged, confidential, # // and exempt from disclosure under the Freedom of Information Act, # // 5 U.S.C. Section 552. Furthermore, this information # // is prohibited from disclosure under the Trade Secrets Act, # // 18 U.S.C. Section 1905. # // # source simulate.tcl # DirectoriesListNum == 1 # CurrDirectoryPath == D:/tcl2tb/Sim at lindex = 0 # QuestaSim-64 vlog 2020.1 Compiler 2020.01 Jan 28 2020 # Start time: 18:56:06 on Sep 24,2021 # vlog -reportprogress 300 "+acc" "+define+TEST_NUMBER=3" D:/tcl2tb/Sim/tb.sv # -- Compiling module tb # # Top level modules: # tb # End time: 18:56:06 on Sep 24,2021, Elapsed time: 0:00:00 # Errors: 0, Warnings: 0 # FilesOfCurrDirCompiled = 1 # success # End time: 18:56:09 on Sep 24,2021, Elapsed time: 0:07:02 # Errors: 0, Warnings: 0 # vsim -L work work.tb # Start time: 18:56:10 on Sep 24,2021 # ** Note: (vsim-8009) Loading existing optimized design _opt # Loading sv_std.std # Loading work.tb(fast) # TSTNUM1 = 1 # TSTNUM2 = 2 откуда следует, что из TCL в HDL (SV) величины не передались. ЧЯДНТ? Проект, как всегда, в скрепке. tcl2hdl.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 25 сентября, 2021 Опубликовано 25 сентября, 2021 · Жалоба 12 часов назад, MaratZuev сказал: ЧЯДНТ? Не читаете документацию на симулятор? Не верю, чтобы там не было это описано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 25 сентября, 2021 Опубликовано 25 сентября, 2021 · Жалоба 2 hours ago, andrew_b said: Не читаете документацию на симулятор? Не верю, чтобы там не было это описано. Не поверите, но, прежде задавать вопросы здесь ли или где, я приучен сам сначала искать где возможно ответы. В документации не нашёл. Но сам дошёл до ответа, как и в предыдущий раз. Видимо, не хватает стимулов в виде порицания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 25 сентября, 2021 Опубликовано 25 сентября, 2021 · Жалоба У vsim есть ключик -G для переопределения всех параметров с таким именем в исходника, либо ключик -g, который перреопределяет параметр с таким именем в модуле верхнего уровня Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Джеймс 3 26 сентября, 2021 Опубликовано 26 сентября, 2021 · Жалоба On 9/25/2021 at 9:54 AM, MaratZuev said: В документации не нашёл. Но сам дошёл до ответа, как и в предыдущий раз. Анатолий, могли бы написать, в чем была проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 27 сентября, 2021 Опубликовано 27 сентября, 2021 · Жалоба On 9/26/2021 at 3:17 PM, Джеймс said: в чем была проблема? Вот в этой строке variable Keys "+define+TEST_NUMBER=3" кавычки лишние Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 13 октября, 2021 Опубликовано 13 октября, 2021 · Жалоба On 9/27/2021 at 4:40 PM, MaratZuev said: Вот в этой строке variable Keys "+define+TEST_NUMBER=3" кавычки лишние Это выглядит потрясающе. Для стандартного TCL парсера не должно быть никакой разницы. Я специально проверил в tclsh: set a "+define+TEST_NUMBER=3" set b +define+TEST_NUMBER=3 put [expr {$a==$b}] 1 Неужели у Квесты парсер какой-то не стандартный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 13 октября, 2021 Опубликовано 13 октября, 2021 · Жалоба 55 minutes ago, Timmy said: у Квесты парсер какой-то не стандартный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 14 октября, 2021 Опубликовано 14 октября, 2021 · Жалоба Тогда непонятно, как кавычки могли повлиять. Ещё хочу заметить, чтобы в vlog можно было передать несколько ключей, заданных в Keys списком, как независимые параметры, а не одной строкой, нужно написать в compilation.tcl eval vlog +acc $Keys [list $CurrDirectoryPath/*.$Extension2Compile] list нужен, чтобы eval не разобрал путь с маской на несколько параметров, если в пути вдруг будут пробелы. Или в современном варианте vlog +acc {*}$Keys $CurrDirectoryPath/*.$Extension2Compile Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 17 октября, 2021 Опубликовано 17 октября, 2021 · Жалоба On 10/14/2021 at 7:23 AM, Timmy said: в современном варианте Прошу пояснить, что Вы подразумеваете под оным? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 17 октября, 2021 Опубликовано 17 октября, 2021 · Жалоба 1 hour ago, MaratZuev said: Прошу пояснить, что Вы подразумеваете под оным? Оператор {*}, позволяющий непосредственно разворачивать список в несколько параметров, появился относительно недавно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться