origen_sim 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d3ab8cb5d8aa155ae27711a8fba140910316c97
4
- data.tar.gz: 6df912a7d278020ba64bda1d203fc3efd7f5d5a1
3
+ metadata.gz: f60a5e099e0edaf4c0c769034d2eb9dd2cef4660
4
+ data.tar.gz: b89dd7aa4de98bd80bd7b130158ef0c5a2f0acc1
5
5
  SHA512:
6
- metadata.gz: c5e6a4e7fcab4e0aff503dcbcacace8f929e50e4cb971029b4dc7ae850196a1014f512d5112af8685ff4a002b82d4493df1854fa07a99bc68ccb138d80857eed
7
- data.tar.gz: c7dc8d1c270e0a1426177b0b3e96489aa8e714fe13299219f3a03fb7e675f3930c0dc9e106603f4042320118603aa42ecc6faaee0ffa1366152758d7af648a1c
6
+ metadata.gz: 17cb26ed22d5098edcdc59a2e5ee23e35a8b36b4b9b2b6959990bd151880da02a925719286a46b9d9dc20711a1640dbab809fbb01de5139ae7f5845c97a8bc52
7
+ data.tar.gz: c30220fbebb6a393bdc5ff05e80d51401aa40b7ac031f69c56fa14c7ee673b2111851682e46967b767afaa72ae0299c517c32fd3ff1616ab5fd5a32ec5195a70
data/config/commands.rb CHANGED
@@ -20,25 +20,34 @@ when "sim:build_example"
20
20
  output = `origen sim:build #{Origen.app.remotes_dir}/example_rtl/dut1/dut1.v`
21
21
  puts output
22
22
  Origen.load_target
23
- FileUtils.mkdir_p "simulation/default/#{tester.simulator.config[:vendor]}"
23
+ dir = "simulation/default/#{tester.simulator.config[:vendor]}"
24
+ FileUtils.rm_rf(dir) if File.exist?(dir)
25
+ FileUtils.mkdir_p(dir)
24
26
  case tester.simulator.config[:vendor]
25
27
  when :icarus
26
28
  output =~ / (cd .*)\n/
27
29
  system $1
28
30
  FileUtils.mv "#{Origen.config.output_directory}/origen.vpi", "simulation/default/icarus"
29
- output =~ / (iverilog .*)\n/
31
+ output =~ /\n(.*iverilog .*)\n/
30
32
  system $1
31
33
  FileUtils.mv "origen.vvp", "simulation/default/icarus"
32
34
 
33
35
  when :cadence
34
- output =~ / (irun .*)\n/
35
- system = $1
36
+ output =~ /\n(.*irun .*)\n/
37
+ system $1
36
38
  FileUtils.mv "INCA_libs", "simulation/default/cadence"
37
39
 
40
+ when :synopsys
41
+ output =~ /\n(.*vcs .*)\n/
42
+ system $1
43
+ FileUtils.mv "simv", "simulation/default/synopsys"
44
+ FileUtils.mv "simv.daidir", "simulation/default/synopsys"
45
+ FileUtils.rm_rf "csrc"
46
+
38
47
  end
39
48
 
40
49
  puts
41
- puts "Done, run this command to run a test simulation:"
50
+ puts "Done, run this command to run a test simulation using #{tester.simulator.config[:vendor]}:"
42
51
  puts
43
52
  puts " origen g test"
44
53
  puts
@@ -6,7 +6,7 @@ when "sim:build", "origen_sim:build"
6
6
 
7
7
  else
8
8
  @global_commands << <<-EOT
9
- sim:build Build an Origen testbench and simulator extension for a given RTL design
9
+ sim:build Build an Origen testbench and simulator extension for a given design
10
10
  EOT
11
11
 
12
12
  end
data/config/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module OrigenSim
2
2
  MAJOR = 0
3
- MINOR = 6
3
+ MINOR = 7
4
4
  BUGFIX = 0
5
5
  DEV = nil
6
6
 
data/ext/origen.c CHANGED
@@ -108,14 +108,3 @@ static void register_callback(PLI_INT32 aReason, PLI_INT32 (*aHandler)(p_cb_data
108
108
  /// Bootstrap vector, make the simulator execute init() on startup
109
109
  ///
110
110
  void (*vlog_startup_routines[])(void) = { init, 0 };
111
-
112
- #if defined(CVER) || defined(VCS) || defined(NCSIM)
113
- void vlog_startup_routines_bootstrap()
114
- {
115
- unsigned int i;
116
- for (i = 0; vlog_startup_routines[i]; i++)
117
- {
118
- vlog_startup_routines[i]();
119
- }
120
- }
121
- #endif
@@ -9,12 +9,12 @@ options = { source_dirs: [] }
9
9
  app_options = @application_options || []
10
10
  opt_parser = OptionParser.new do |opts|
11
11
  opts.banner = <<-EOT
12
- Build an Origen testbench and simulator VPI extension for the given top-level RTL design.
12
+ Build an Origen testbench and simulator VPI extension for the given top-level RTL design file (or a stub).
13
13
 
14
14
  The created artifacts should be included in a compilation of the given design to create
15
15
  an Origen-enabled simulation object that can be used to simulate Origen-based test patterns.
16
16
 
17
- Usage: origen sim:build TOP_LEVEL_RTL_FILE [options]
17
+ Usage: origen sim:build TOP_LEVEL_VERILOG_FILE [options]
18
18
  EOT
19
19
  opts.on('-o', '--output DIR', String, 'Override the default output directory') { |t| options[:output] = t }
20
20
  opts.on('-t', '--top NAME', String, 'Specify the top-level Verilog module name if OrigenSim can\'t work it out') { |t| options[:top_level_name] = t }
@@ -117,33 +117,59 @@ puts ' -timescale 1ns/1ns'
117
117
  puts
118
118
  puts 'Here is an example which may work for the file you just parsed (add additional -incdir options at the end if required):'
119
119
  puts
120
- puts " irun #{rtl_top} #{output_directory}/origen.v #{output_directory}/*.c -ccargs \"-std=c99\" -top origen -elaborate -snapshot origen -access +rw -timescale 1ns/1ns -incdir #{Pathname.new(rtl_top).dirname}"
120
+ puts " #{ENV['ORIGEN_SIM_IRUN'] || 'irun'} #{rtl_top} #{output_directory}/origen.v #{output_directory}/*.c -ccargs \"-std=c99\" -top origen -elaborate -snapshot origen -access +rw -timescale 1ns/1ns -incdir #{Pathname.new(rtl_top).dirname}"
121
121
  puts
122
122
  puts 'Copy the following directory (produced by irun) to simulation/<target>/cadence/. within your Origen application:'
123
123
  puts
124
124
  puts ' INCA_libs'
125
125
  puts
126
126
  puts '-----------------------------------------------------------'
127
+ puts 'Synopsys VCS'
128
+ puts '-----------------------------------------------------------'
129
+ puts
130
+ puts 'Add the following to your build script (AND REMOVE ANY OTHER TESTBENCH!):'
131
+ puts
132
+ puts " #{output_directory}/origen.v \\"
133
+ puts " #{output_directory}/brdige.c \\"
134
+ puts " #{output_directory}/client.c \\"
135
+ puts ' -CFLAGS "-std=c99" \\'
136
+ puts ' +vpi \\'
137
+ puts " -use_vpiobj #{output_directory}/origen.c \\"
138
+ puts ' +define+ORIGEN_VPD=1 \\'
139
+ puts ' -debug_access+all \\'
140
+ puts ' -PP \\'
141
+ puts ' -timescale=1ns/1ns'
142
+ puts
143
+ puts 'Here is an example which may work for the file you just parsed (add additional -incdir options at the end if required):'
144
+ puts
145
+ puts " #{ENV['ORIGEN_SIM_VCS'] || 'vcs'} #{rtl_top} #{output_directory}/origen.v #{output_directory}/bridge.c #{output_directory}/client.c -CFLAGS \"-std=c99\" +vpi -use_vpiobj #{output_directory}/origen.c -timescale=1ns/1ns +define+ORIGEN_VPD=1 +incdir+#{Pathname.new(rtl_top).dirname} -debug_access+all -PP"
146
+ puts
147
+ puts 'Copy the following files (produced by vcs) to simulation/<target>/synopsys/. within your Origen application:'
148
+ puts
149
+ puts ' simv'
150
+ puts ' simv.daidir'
151
+ puts
152
+ puts '-----------------------------------------------------------'
127
153
  puts 'Icarus Verilog'
128
154
  puts '-----------------------------------------------------------'
129
155
  puts
130
156
  puts 'Compile the VPI extension using the following command:'
131
157
  puts
132
- puts " cd #{output_directory} && iverilog-vpi *.c -DICARUS --name=origen && cd #{Pathname.pwd}"
158
+ puts " cd #{output_directory} && #{ENV['ORIGEN_SIM_IVERILOG_VPI'] || 'iverilog-vpi'} *.c --name=origen && cd #{Pathname.pwd}"
133
159
  puts
134
160
  puts 'Add the following to your build script (AND REMOVE ANY OTHER TESTBENCH!):'
135
161
  puts
136
162
  puts " #{output_directory}/origen.v \\"
137
163
  puts ' -o origen.vvp \\'
138
- puts ' -DICARUS'
164
+ puts ' -DORIGEN_VCD'
139
165
  puts
140
166
  puts 'Here is an example which may work for the file you just parsed (add additional source dirs with more -I options at the end if required):'
141
167
  puts
142
- puts " iverilog #{rtl_top} #{output_directory}/origen.v -o origen.vvp -DICARUS -I #{Pathname.new(rtl_top).dirname}"
168
+ puts " #{ENV['ORIGEN_SIM_IVERILOG'] || 'iverilog'} #{rtl_top} #{output_directory}/origen.v -o origen.vvp -DICARUS -I #{Pathname.new(rtl_top).dirname}"
143
169
  puts
144
- puts 'Copy the following files to simulation/<target>/icarus/. within your Origen application:'
170
+ puts 'Copy the following files (produced by iverilog) to simulation/<target>/icarus/. within your Origen application:'
145
171
  puts
146
172
  puts " #{output_directory}/origen.vpi"
147
- puts ' origen.vvp (produced by the iverilog command)'
173
+ puts ' origen.vvp'
148
174
  puts
149
175
  puts
@@ -6,7 +6,7 @@ module OrigenSim
6
6
  class Simulator
7
7
  include Origen::PersistentCallbacks
8
8
 
9
- VENDORS = [:icarus, :cadence]
9
+ VENDORS = [:icarus, :cadence, :synopsys]
10
10
 
11
11
  attr_reader :socket, :failed, :configuration
12
12
  alias_method :config, :configuration
@@ -157,7 +157,7 @@ module OrigenSim
157
157
  else
158
158
  # We tried our best, start from scratch
159
159
  d = "#{Origen.root!}/templates/empty.#{wave_config_ext}"
160
- FileUtils.cp(d, f)
160
+ FileUtils.cp(d, f) if File.exist?(d)
161
161
  end
162
162
  end
163
163
  end
@@ -171,6 +171,8 @@ module OrigenSim
171
171
  'gtkw'
172
172
  when :cadence
173
173
  'svcf'
174
+ when :synopsys
175
+ 'tcl'
174
176
  end
175
177
  end
176
178
 
@@ -209,6 +211,13 @@ module OrigenSim
209
211
  cmd += " -r origen -snapshot origen +socket+#{socket_id}"
210
212
  cmd += $use_fast_probe_depth ? " -input #{input_file_fast}" : " -input #{input_file}"
211
213
  cmd += " -nclibdirpath #{compiled_dir}"
214
+
215
+ when :synopsys
216
+ cmd = "#{compiled_dir}/simv +socket+#{socket_id} -vpd_file origen.vpd"
217
+
218
+ else
219
+ fail "Run cmd not defined yet for simulator #{config[:vendor]}"
220
+
212
221
  end
213
222
  cmd
214
223
  end
@@ -234,13 +243,23 @@ module OrigenSim
234
243
  f = Pathname.new(wave_config_file).relative_path_from(edir.expand_path)
235
244
  cmd += " -input #{f} &"
236
245
 
246
+ when :synopsys
247
+ edir = Pathname.new(wave_config_dir).relative_path_from(Pathname.pwd)
248
+ cmd = "cd #{edir} && "
249
+ cmd += configuration[:dve] || 'dve'
250
+ dir = Pathname.new(wave_dir).relative_path_from(edir.expand_path)
251
+ cmd += " -vpd #{dir}/origen.vpd"
252
+ f = Pathname.new(wave_config_file).relative_path_from(edir.expand_path)
253
+ cmd += " -session #{f}"
254
+ cmd += ' &'
255
+
237
256
  end
238
257
  cmd
239
258
  end
240
259
 
241
260
  def run_dir
242
261
  case config[:vendor]
243
- when :icarus
262
+ when :icarus, :synopsys
244
263
  wave_dir
245
264
  else
246
265
  tmp_dir
@@ -568,7 +587,7 @@ module OrigenSim
568
587
  ended = Time.now
569
588
  end_simulation
570
589
  # Give the simulator a few seconds to shut down, otherwise kill it
571
- sleep 1 while running? && (Time.now - ended) < 5
590
+ sleep 1 while running? && (Time.now - ended) < 10
572
591
  Process.kill(15, pid) if running?
573
592
  sleep 0.1
574
593
  # Leave the pid file around if we couldn't verify the simulator
@@ -0,0 +1,352 @@
1
+ # Begin_DVE_Session_Save_Info
2
+ # DVE full session
3
+ # Saved on Tue Feb 6 08:56:45 2018
4
+ # Designs open: 1
5
+ # V1: /scratch/nxa21353/Code/github/origen_sim/waves/default/origen.vpd
6
+ # Toplevel windows open: 2
7
+ # TopLevel.1
8
+ # TopLevel.2
9
+ # Source.1: origen.dut
10
+ # Wave.1: 3 signals
11
+ # Group count = 2
12
+ # Group Debug signal count = 3
13
+ # Group DUT signal count = 0
14
+ # End_DVE_Session_Save_Info
15
+
16
+ # DVE version: L-2016.06
17
+ # DVE build date: May 24 2016 21:00:26
18
+
19
+
20
+ #<Session mode="Full" path="/scratch/nxa21353/Code/github/origen_sim/config/waves/default/nxa21353.tcl" type="Debug">
21
+
22
+ gui_set_loading_session_type Post
23
+ gui_continuetime_set
24
+
25
+ # Close design
26
+ if { [gui_sim_state -check active] } {
27
+ gui_sim_terminate
28
+ }
29
+ gui_close_db -all
30
+ gui_expr_clear_all
31
+
32
+ # Close all windows
33
+ gui_close_window -type Console
34
+ gui_close_window -type Wave
35
+ gui_close_window -type Source
36
+ gui_close_window -type Schematic
37
+ gui_close_window -type Data
38
+ gui_close_window -type DriverLoad
39
+ gui_close_window -type List
40
+ gui_close_window -type Memory
41
+ gui_close_window -type HSPane
42
+ gui_close_window -type DLPane
43
+ gui_close_window -type Assertion
44
+ gui_close_window -type CovHier
45
+ gui_close_window -type CoverageTable
46
+ gui_close_window -type CoverageMap
47
+ gui_close_window -type CovDetail
48
+ gui_close_window -type Local
49
+ gui_close_window -type Stack
50
+ gui_close_window -type Watch
51
+ gui_close_window -type Group
52
+ gui_close_window -type Transaction
53
+
54
+
55
+
56
+ # Application preferences
57
+ gui_set_pref_value -key app_default_font -value {Helvetica,10,-1,5,50,0,0,0,0,0}
58
+ gui_src_preferences -tabstop 8 -maxbits 24 -windownumber 1
59
+ #<WindowLayout>
60
+
61
+ # DVE top-level session
62
+
63
+
64
+ # Create and position top-level window: TopLevel.1
65
+
66
+ if {![gui_exist_window -window TopLevel.1]} {
67
+ set TopLevel.1 [ gui_create_window -type TopLevel \
68
+ -icon $::env(DVE)/auxx/gui/images/toolbars/dvewin.xpm]
69
+ } else {
70
+ set TopLevel.1 TopLevel.1
71
+ }
72
+ gui_show_window -window ${TopLevel.1} -show_state normal -rect {{525 653} {2223 1819}}
73
+
74
+ # ToolBar settings
75
+ gui_set_toolbar_attributes -toolbar {TimeOperations} -dock_state top
76
+ gui_set_toolbar_attributes -toolbar {TimeOperations} -offset 0
77
+ gui_show_toolbar -toolbar {TimeOperations}
78
+ gui_hide_toolbar -toolbar {&File}
79
+ gui_set_toolbar_attributes -toolbar {&Edit} -dock_state top
80
+ gui_set_toolbar_attributes -toolbar {&Edit} -offset 0
81
+ gui_show_toolbar -toolbar {&Edit}
82
+ gui_hide_toolbar -toolbar {CopyPaste}
83
+ gui_set_toolbar_attributes -toolbar {&Trace} -dock_state top
84
+ gui_set_toolbar_attributes -toolbar {&Trace} -offset 0
85
+ gui_show_toolbar -toolbar {&Trace}
86
+ gui_hide_toolbar -toolbar {TraceInstance}
87
+ gui_hide_toolbar -toolbar {BackTrace}
88
+ gui_set_toolbar_attributes -toolbar {&Scope} -dock_state top
89
+ gui_set_toolbar_attributes -toolbar {&Scope} -offset 0
90
+ gui_show_toolbar -toolbar {&Scope}
91
+ gui_set_toolbar_attributes -toolbar {&Window} -dock_state top
92
+ gui_set_toolbar_attributes -toolbar {&Window} -offset 0
93
+ gui_show_toolbar -toolbar {&Window}
94
+ gui_set_toolbar_attributes -toolbar {Signal} -dock_state top
95
+ gui_set_toolbar_attributes -toolbar {Signal} -offset 0
96
+ gui_show_toolbar -toolbar {Signal}
97
+ gui_set_toolbar_attributes -toolbar {Zoom} -dock_state top
98
+ gui_set_toolbar_attributes -toolbar {Zoom} -offset 0
99
+ gui_show_toolbar -toolbar {Zoom}
100
+ gui_set_toolbar_attributes -toolbar {Zoom And Pan History} -dock_state top
101
+ gui_set_toolbar_attributes -toolbar {Zoom And Pan History} -offset 0
102
+ gui_show_toolbar -toolbar {Zoom And Pan History}
103
+ gui_set_toolbar_attributes -toolbar {Grid} -dock_state top
104
+ gui_set_toolbar_attributes -toolbar {Grid} -offset 0
105
+ gui_show_toolbar -toolbar {Grid}
106
+ gui_hide_toolbar -toolbar {Simulator}
107
+ gui_hide_toolbar -toolbar {Interactive Rewind}
108
+ gui_hide_toolbar -toolbar {Testbench}
109
+
110
+ # End ToolBar settings
111
+
112
+ # Docked window settings
113
+ gui_sync_global -id ${TopLevel.1} -option true
114
+
115
+ # MDI window settings
116
+ set Console.1 [gui_create_window -type {Console} -parent ${TopLevel.1}]
117
+ gui_show_window -window ${Console.1} -show_state maximized
118
+ gui_update_layout -id ${Console.1} {{show_state maximized} {dock_state undocked} {dock_on_new_line false}}
119
+ set HSPane.1 [gui_create_window -type {HSPane} -parent ${TopLevel.1}]
120
+ if {[gui_get_shared_view -id ${HSPane.1} -type Hier] == {}} {
121
+ set Hier.1 [gui_share_window -id ${HSPane.1} -type Hier]
122
+ } else {
123
+ set Hier.1 [gui_get_shared_view -id ${HSPane.1} -type Hier]
124
+ }
125
+
126
+ gui_show_window -window ${HSPane.1} -show_state maximized
127
+ gui_update_layout -id ${HSPane.1} {{show_state maximized} {dock_state undocked} {dock_on_new_line false} {child_hier_colhier 987} {child_hier_coltype 715} {child_hier_colpd 0} {child_hier_col1 0} {child_hier_col2 1} {child_hier_col3 -1}}
128
+ set DLPane.1 [gui_create_window -type {DLPane} -parent ${TopLevel.1}]
129
+ if {[gui_get_shared_view -id ${DLPane.1} -type Data] == {}} {
130
+ set Data.1 [gui_share_window -id ${DLPane.1} -type Data]
131
+ } else {
132
+ set Data.1 [gui_get_shared_view -id ${DLPane.1} -type Data]
133
+ }
134
+
135
+ gui_show_window -window ${DLPane.1} -show_state maximized
136
+ gui_update_layout -id ${DLPane.1} {{show_state maximized} {dock_state undocked} {dock_on_new_line false} {child_data_colvariable 711} {child_data_colvalue 470} {child_data_coltype 514} {child_data_col1 0} {child_data_col2 1} {child_data_col3 2}}
137
+ set Source.1 [gui_create_window -type {Source} -parent ${TopLevel.1}]
138
+ gui_show_window -window ${Source.1} -show_state maximized
139
+ gui_update_layout -id ${Source.1} {{show_state maximized} {dock_state undocked} {dock_on_new_line false}}
140
+
141
+ # End MDI window settings
142
+
143
+
144
+ # Create and position top-level window: TopLevel.2
145
+
146
+ if {![gui_exist_window -window TopLevel.2]} {
147
+ set TopLevel.2 [ gui_create_window -type TopLevel \
148
+ -icon $::env(DVE)/auxx/gui/images/toolbars/dvewin.xpm]
149
+ } else {
150
+ set TopLevel.2 TopLevel.2
151
+ }
152
+ gui_show_window -window ${TopLevel.2} -show_state normal -rect {{293 121} {2365 1172}}
153
+
154
+ # ToolBar settings
155
+ gui_set_toolbar_attributes -toolbar {TimeOperations} -dock_state top
156
+ gui_set_toolbar_attributes -toolbar {TimeOperations} -offset 0
157
+ gui_show_toolbar -toolbar {TimeOperations}
158
+ gui_hide_toolbar -toolbar {&File}
159
+ gui_set_toolbar_attributes -toolbar {&Edit} -dock_state top
160
+ gui_set_toolbar_attributes -toolbar {&Edit} -offset 0
161
+ gui_show_toolbar -toolbar {&Edit}
162
+ gui_hide_toolbar -toolbar {CopyPaste}
163
+ gui_set_toolbar_attributes -toolbar {&Trace} -dock_state top
164
+ gui_set_toolbar_attributes -toolbar {&Trace} -offset 0
165
+ gui_show_toolbar -toolbar {&Trace}
166
+ gui_hide_toolbar -toolbar {TraceInstance}
167
+ gui_hide_toolbar -toolbar {BackTrace}
168
+ gui_set_toolbar_attributes -toolbar {&Scope} -dock_state top
169
+ gui_set_toolbar_attributes -toolbar {&Scope} -offset 0
170
+ gui_show_toolbar -toolbar {&Scope}
171
+ gui_set_toolbar_attributes -toolbar {&Window} -dock_state top
172
+ gui_set_toolbar_attributes -toolbar {&Window} -offset 0
173
+ gui_show_toolbar -toolbar {&Window}
174
+ gui_set_toolbar_attributes -toolbar {Signal} -dock_state top
175
+ gui_set_toolbar_attributes -toolbar {Signal} -offset 0
176
+ gui_show_toolbar -toolbar {Signal}
177
+ gui_set_toolbar_attributes -toolbar {Zoom} -dock_state top
178
+ gui_set_toolbar_attributes -toolbar {Zoom} -offset 0
179
+ gui_show_toolbar -toolbar {Zoom}
180
+ gui_set_toolbar_attributes -toolbar {Zoom And Pan History} -dock_state top
181
+ gui_set_toolbar_attributes -toolbar {Zoom And Pan History} -offset 0
182
+ gui_show_toolbar -toolbar {Zoom And Pan History}
183
+ gui_set_toolbar_attributes -toolbar {Grid} -dock_state top
184
+ gui_set_toolbar_attributes -toolbar {Grid} -offset 0
185
+ gui_show_toolbar -toolbar {Grid}
186
+ gui_hide_toolbar -toolbar {Simulator}
187
+ gui_hide_toolbar -toolbar {Interactive Rewind}
188
+ gui_hide_toolbar -toolbar {Testbench}
189
+
190
+ # End ToolBar settings
191
+
192
+ # Docked window settings
193
+ gui_sync_global -id ${TopLevel.2} -option true
194
+
195
+ # MDI window settings
196
+ set Wave.1 [gui_create_window -type {Wave} -parent ${TopLevel.2}]
197
+ gui_show_window -window ${Wave.1} -show_state maximized
198
+ gui_update_layout -id ${Wave.1} {{show_state maximized} {dock_state undocked} {dock_on_new_line false} {child_wave_left 602} {child_wave_right 1465} {child_wave_colname 299} {child_wave_colvalue 299} {child_wave_col1 0} {child_wave_col2 1}}
199
+
200
+ # End MDI window settings
201
+
202
+ gui_set_env TOPLEVELS::TARGET_FRAME(Source) ${TopLevel.1}
203
+ gui_set_env TOPLEVELS::TARGET_FRAME(Schematic) ${TopLevel.1}
204
+ gui_set_env TOPLEVELS::TARGET_FRAME(PathSchematic) ${TopLevel.1}
205
+ gui_set_env TOPLEVELS::TARGET_FRAME(Wave) none
206
+ gui_set_env TOPLEVELS::TARGET_FRAME(List) none
207
+ gui_set_env TOPLEVELS::TARGET_FRAME(Memory) ${TopLevel.1}
208
+ gui_set_env TOPLEVELS::TARGET_FRAME(DriverLoad) none
209
+ gui_update_statusbar_target_frame ${TopLevel.1}
210
+ gui_update_statusbar_target_frame ${TopLevel.2}
211
+
212
+ #</WindowLayout>
213
+
214
+ #<Database>
215
+
216
+ # DVE Open design session:
217
+
218
+ if { ![gui_is_db_opened -db {/scratch/nxa21353/Code/github/origen_sim/waves/default/origen.vpd}] } {
219
+ gui_open_db -design V1 -file /scratch/nxa21353/Code/github/origen_sim/waves/default/origen.vpd -nosource
220
+ }
221
+ gui_set_precision 1ns
222
+ gui_set_time_units 1ns
223
+ #</Database>
224
+
225
+ # DVE Global setting session:
226
+
227
+
228
+ # Global: Bus
229
+
230
+ # Global: Expressions
231
+
232
+ # Global: Signal Time Shift
233
+
234
+ # Global: Signal Compare
235
+
236
+ # Global: Signal Groups
237
+ gui_load_child_values {origen.debug}
238
+
239
+
240
+ set _session_group_1 Debug
241
+ gui_sg_create "$_session_group_1"
242
+ set Debug "$_session_group_1"
243
+
244
+ gui_sg_addsignal -group "$_session_group_1" { origen.debug.pattern origen.debug.comments origen.debug.errors }
245
+ gui_set_radix -radix {ascii} -signals {V1:origen.debug.pattern}
246
+ gui_set_radix -radix {unsigned} -signals {V1:origen.debug.pattern}
247
+ gui_set_radix -radix {ascii} -signals {V1:origen.debug.comments}
248
+ gui_set_radix -radix {unsigned} -signals {V1:origen.debug.comments}
249
+
250
+ set _session_group_2 DUT
251
+ gui_sg_create "$_session_group_2"
252
+ set DUT "$_session_group_2"
253
+
254
+
255
+ # Global: Highlighting
256
+
257
+ # Global: Stack
258
+ gui_change_stack_mode -mode list
259
+
260
+ # Post database loading setting...
261
+
262
+ # Restore C1 time
263
+ gui_set_time -C1_only 176252366
264
+
265
+
266
+
267
+ # Save global setting...
268
+
269
+ # Wave/List view global setting
270
+ gui_cov_show_value -switch false
271
+
272
+ # Close all empty TopLevel windows
273
+ foreach __top [gui_ekki_get_window_ids -type TopLevel] {
274
+ if { [llength [gui_ekki_get_window_ids -parent $__top]] == 0} {
275
+ gui_close_window -window $__top
276
+ }
277
+ }
278
+ gui_set_loading_session_type noSession
279
+ # DVE View/pane content session:
280
+
281
+
282
+ # Hier 'Hier.1'
283
+ gui_show_window -window ${Hier.1}
284
+ gui_list_set_filter -id ${Hier.1} -list { {Package 1} {All 0} {Process 1} {VirtPowSwitch 0} {UnnamedProcess 1} {UDP 0} {Function 1} {Block 1} {SrsnAndSpaCell 0} {OVA Unit 1} {LeafScCell 1} {LeafVlgCell 1} {Interface 1} {LeafVhdCell 1} {$unit 1} {NamedBlock 1} {Task 1} {VlgPackage 1} {ClassDef 1} {VirtIsoCell 0} }
285
+ gui_list_set_filter -id ${Hier.1} -text {*}
286
+ gui_hier_list_init -id ${Hier.1}
287
+ gui_change_design -id ${Hier.1} -design V1
288
+ catch {gui_list_expand -id ${Hier.1} origen}
289
+ catch {gui_list_select -id ${Hier.1} {origen.dut}}
290
+ gui_view_scroll -id ${Hier.1} -vertical -set 0
291
+ gui_view_scroll -id ${Hier.1} -horizontal -set 0
292
+
293
+ # Data 'Data.1'
294
+ gui_list_set_filter -id ${Data.1} -list { {Buffer 1} {Input 1} {Others 1} {Linkage 1} {Output 1} {LowPower 1} {Parameter 1} {All 1} {Aggregate 1} {LibBaseMember 1} {Event 1} {Assertion 1} {Constant 1} {Interface 1} {BaseMembers 1} {Signal 1} {$unit 1} {Inout 1} {Variable 1} }
295
+ gui_list_set_filter -id ${Data.1} -text {*}
296
+ gui_list_show_data -id ${Data.1} {origen.dut}
297
+ gui_view_scroll -id ${Data.1} -vertical -set 0
298
+ gui_view_scroll -id ${Data.1} -horizontal -set 0
299
+ gui_view_scroll -id ${Hier.1} -vertical -set 0
300
+ gui_view_scroll -id ${Hier.1} -horizontal -set 0
301
+
302
+ # Source 'Source.1'
303
+ gui_src_value_annotate -id ${Source.1} -switch false
304
+ gui_set_env TOGGLE::VALUEANNOTATE 0
305
+ gui_open_source -id ${Source.1} -replace -active origen.dut /scratch/nxa21353/Code/github/.origen_sim_remotes_DO_NOT_HAND_MODIFY/example_rtl/dut1/dut1.v
306
+ gui_view_scroll -id ${Source.1} -vertical -set 0
307
+ gui_src_set_reusable -id ${Source.1}
308
+
309
+ # View 'Wave.1'
310
+ gui_wv_sync -id ${Wave.1} -switch false
311
+ set groupExD [gui_get_pref_value -category Wave -key exclusiveSG]
312
+ gui_set_pref_value -category Wave -key exclusiveSG -value {false}
313
+ set origWaveHeight [gui_get_pref_value -category Wave -key waveRowHeight]
314
+ gui_list_set_height -id Wave -height 25
315
+ set origGroupCreationState [gui_list_create_group_when_add -wave]
316
+ gui_list_create_group_when_add -wave -disable
317
+ gui_marker_set_ref -id ${Wave.1} C1
318
+ gui_wv_zoom_timerange -id ${Wave.1} 0 353973502
319
+ gui_list_add_group -id ${Wave.1} -after {New Group} {Debug}
320
+ gui_list_add_group -id ${Wave.1} -after {New Group} {DUT}
321
+ gui_seek_criteria -id ${Wave.1} {Any Edge}
322
+
323
+
324
+
325
+ gui_set_env TOGGLE::DEFAULT_WAVE_WINDOW ${Wave.1}
326
+ gui_set_pref_value -category Wave -key exclusiveSG -value $groupExD
327
+ gui_list_set_height -id Wave -height $origWaveHeight
328
+ if {$origGroupCreationState} {
329
+ gui_list_create_group_when_add -wave -enable
330
+ }
331
+ if { $groupExD } {
332
+ gui_msg_report -code DVWW028
333
+ }
334
+ gui_list_set_filter -id ${Wave.1} -list { {Buffer 1} {Input 1} {Others 1} {Linkage 1} {Output 1} {Parameter 1} {All 1} {Aggregate 1} {LibBaseMember 1} {Event 1} {Assertion 1} {Constant 1} {Interface 1} {BaseMembers 1} {Signal 1} {$unit 1} {Inout 1} {Variable 1} }
335
+ gui_list_set_filter -id ${Wave.1} -text {*}
336
+ gui_list_set_insertion_bar -id ${Wave.1} -group {New Group} -position in
337
+
338
+ gui_marker_move -id ${Wave.1} {C1} 176252366
339
+ gui_view_scroll -id ${Wave.1} -vertical -set 0
340
+ gui_show_grid -id ${Wave.1} -enable false
341
+ # Restore toplevel window zorder
342
+ # The toplevel window could be closed if it has no view/pane
343
+ if {[gui_exist_window -window ${TopLevel.2}]} {
344
+ gui_set_active_window -window ${TopLevel.2}
345
+ gui_set_active_window -window ${Wave.1}
346
+ }
347
+ if {[gui_exist_window -window ${TopLevel.1}]} {
348
+ gui_set_active_window -window ${TopLevel.1}
349
+ gui_set_active_window -window ${Source.1}
350
+ }
351
+ #</Session>
352
+
@@ -151,15 +151,32 @@ module origen;
151
151
  .errors(errors)
152
152
  );
153
153
 
154
- `ifdef ICARUS
154
+ `ifdef ORIGEN_VCD
155
155
  initial
156
156
  begin
157
+ //$display("********************************");
158
+ //$display("Creating origen.vcd...");
159
+ //$display("********************************");
157
160
  $dumpfile("origen.vcd");
158
161
  $dumpvars(0,origen);
159
162
  end
160
163
  `endif
164
+
165
+ `ifdef ORIGEN_VPD
166
+ initial
167
+ begin
168
+ $vcdplusfile("origen.vpd");
169
+ $vcdpluson;
170
+ end
171
+ `endif
161
172
 
162
173
  always @(posedge finish) begin
174
+ `ifdef ORIGEN_VPD
175
+ $vcdplusoff;
176
+ `endif
177
+ //$display("********************************");
178
+ //$display("Finishing simulation...");
179
+ //$display("********************************");
163
180
  $finish(2);
164
181
  end
165
182
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen_sim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-19 00:00:00.000000000 Z
11
+ date: 2018-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: origen
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0.3'
47
+ version: 0.3.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0.3'
54
+ version: 0.3.1
55
55
  description:
56
56
  email:
57
57
  - stephen.f.mcginty@gmail.com
@@ -91,6 +91,7 @@ files:
91
91
  - program/p1.rb
92
92
  - templates/empty.gtkw
93
93
  - templates/empty.svcf
94
+ - templates/empty.tcl
94
95
  - templates/probe.tcl.erb
95
96
  - templates/rtl_v/origen.v.erb
96
97
  - templates/web/index.md.erb
@@ -116,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  version: 1.8.11
117
118
  requirements: []
118
119
  rubyforge_project:
119
- rubygems_version: 2.6.8
120
+ rubygems_version: 2.6.7
120
121
  signing_key:
121
122
  specification_version: 4
122
123
  summary: Plugin that provides a testbench environment to simulate Origen test patterns