我正在尝试将 Origen-Sim 连接到旧版模拟流程中,并且在让套接字连接正常工作时遇到了一些麻烦。
出于调试目的,我在simulator.rb 中添加了一个新条目,允许我手动启动模拟器:
when :legacy
#cmd = "sim na_origen2 -makeopts SOCKET='#{socket_id}
cmd = "echo 'hi!'"
puts(socket_id)
然后我用 +socket+{socket_id} 运行我的模拟器
我所看到的:
当我不传入套接字时,模拟器会因以下原因而死:
ERROR: No socket ID given to the simulator
ERROR: Couldn't connect to Origen app!
ncelab: *F,INTERR: INTERNAL EXCEPTION
和 Origen 只是挂起 - 正如预期的那样。
当我确实通过套接字时,我得到了同样的错误,但是Origen 然后在套接字上看到了一些东西但是崩溃了。EOM 错误。
完全披露 - 因为我正在运行一个遗留流程,所以我使用的是 ncsim 而不是 irun。为此,我使用 -loadpli libpli.so:origen_startup 运行。我想也许代码中的引导程序导致它运行两次,但将其注释掉没有效果:
/// Bootstrap vector, make the simulator execute init() on startup
// void (*vlog_startup_routines[])(void) = { init, 0 };
调试指导表示赞赏!也许一些简单的代码来测试连接?
来自 Origen 的错误日志:
/tmp/1699615188824304081984.sock
lib/ruby/gems/2.1.0/gems/bundler-1.16.1/lib/bundler/compatibility_guard.rb:3:in `require': no such file to load -- rubygems (LoadError)
from lib/ruby/gems/2.1.0/gems/bundler-1.16.1/lib/bundler/compatibility_guard.rb:3
from lib/ruby/gems/2.1.0/gems/bundler-1.16.1/lib/bundler/shared_helpers.rb:3:in `require'
from lib/ruby/gems/2.1.0/gems/bundler-1.16.1/lib/bundler/shared_helpers.rb:3
from lib/ruby/gems/2.1.0/gems/bundler-1.16.1/lib/bundler/setup.rb:3:in `require'
from lib/ruby/gems/2.1.0/gems/bundler-1.16.1/lib/bundler/setup.rb:3
[INFO] 59.654[59.649] || Generating... output/example.txt
[INFO] 59.743[0.088] ||
[INFO] 59.743[0.000] || Pattern vectors: 0
[INFO] 59.743[0.000] || Execution time : 0.000000
[INFO] 59.743[0.000] || ----------------------------------------------------------------------
[INFO] 59.744[0.001] || *** NEW FILE *** To save it: cp output/example.txt .ref/example.txt
[INFO] 59.744[0.000] || **********************************************************************
COMPLETE CALL STACK
-------------------
Connection reset by peer @ io_fillbuf - fd:11
origen_sim/lib/origen_sim/simulator.rb:367:in `readline'
origen_sim/lib/origen_sim/simulator.rb:367:in `get'
origen_sim/lib/origen_sim/simulator.rb:486:in `sync_up'
origen_sim/lib/origen_sim/simulator.rb:374:in `pattern_generated'
origen/generator/pattern.rb:372:in `block in pattern_close'
origen/generator/pattern.rb:370:in `each'
origen/generator/pattern.rb:370:in `pattern_close'
origen/generator/pattern.rb:199:in `pattern_wrapper'
origen/generator/pattern.rb:133:in `block (10 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:107:in `block (9 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:105:in `block (8 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:103:in `block (7 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:101:in `block (6 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:99:in `block (5 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:97:in `block (4 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:95:in `block (3 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:93:in `block (2 levels) in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:91:in `block in create'
origen/generator/pattern.rb:8:in `invoke'
origen/generator/pattern.rb:89:in `create'
pattern/example.rb:1:in `<top (required)>'
origen/generator/job.rb:148:in `load'
origen/generator/job.rb:148:in `run'
origen/generator.rb:31:in `generate_pattern'
origen/application/runner.rb:98:in `block (3 levels) in launch'
origen/application/runner.rb:84:in `each'
origen/application/runner.rb:84:in `block (2 levels) in launch'
origen/application/runner.rb:140:in `record_invocation'
origen/application/runner.rb:75:in `block in launch'
origen/file_handler.rb:392:in `preserve_state'
origen/application/runner.rb:18:in `launch'
origen/commands/generate.rb:61:in `block in <top (required)>'
origen/commands/generate.rb:41:in `_with_doc_tester'
origen/commands/generate.rb:54:in `<top (required)>'
origen/commands.rb:233:in `require'
origen/commands.rb:233:in `<top (required)>'
.origen/gems/ruby/2.1.0/gems/origen-0.31.0/bin/origen:184:in `require'
.origen/gems/ruby/2.1.0/gems/origen-0.31.0/bin/origen:184:in `<top (required)>'
APPLICATION CALL STACK
----------------------
Connection reset by peer @ io_fillbuf - fd:11
pattern/example.rb:1:in `<top (required)>'
origen_sim/lib/origen_sim/simulator.rb:361:in `write': Broken pipe (Errno::EPIPE)
from origen_sim/lib/origen_sim/simulator.rb:361:in `put'
from origen_sim/lib/origen_sim/simulator.rb:485:in `sync_up'
from origen_sim/lib/origen_sim/simulator.rb:514:in `peek'
from origen_sim/lib/origen_sim/simulator.rb:494:in `error_count'
from origen_sim/lib/origen_sim/simulator.rb:610:in `on_origen_shutdown'
from .origen/gems/ruby/2.1.0/gems/origen-0.31.0/bin/origen:229:in `each'
from .origen/gems/ruby/2.1.0/gems/origen-0.31.0/bin/origen:229:in `ensure in <top (required)>'
from .origen/gems/ruby/2.1.0/gems/origen-0.31.0/bin/origen:230:in `<top (required)>'