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 +4 -4
- data/config/commands.rb +14 -5
- data/config/global_commands.rb +1 -1
- data/config/version.rb +1 -1
- data/ext/origen.c +0 -11
- data/lib/origen_sim/commands/build.rb +34 -8
- data/lib/origen_sim/simulator.rb +23 -4
- data/templates/empty.tcl +352 -0
- data/templates/rtl_v/origen.v.erb +18 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f60a5e099e0edaf4c0c769034d2eb9dd2cef4660
|
4
|
+
data.tar.gz: b89dd7aa4de98bd80bd7b130158ef0c5a2f0acc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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 =~
|
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 =~
|
35
|
-
system
|
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
|
data/config/global_commands.rb
CHANGED
data/config/version.rb
CHANGED
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
|
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
|
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 ' -
|
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
|
173
|
+
puts ' origen.vvp'
|
148
174
|
puts
|
149
175
|
puts
|
data/lib/origen_sim/simulator.rb
CHANGED
@@ -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) <
|
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
|
data/templates/empty.tcl
ADDED
@@ -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
|
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.
|
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-
|
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:
|
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:
|
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.
|
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
|