vhdl_help 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ad12d40e966b06c2ac4574336caec040268b817
4
- data.tar.gz: 4d1a32a437d0c1283d553d13d684bbd17c45f37f
3
+ metadata.gz: 857ffe4c3fd8be5eed3fe3319514e61e8d933466
4
+ data.tar.gz: 7a344f4ed091dcfd84cf872c1af1685019e9d75f
5
5
  SHA512:
6
- metadata.gz: b9769286eca4b9f33a4dda931337aef192abae664b98086646f889235340659864393d04a2a6e30cd7d18e78d8f64645018e8564a060e22831cfdd9e8a3ed1cf
7
- data.tar.gz: 3e31d1b597c7ac291cbafc28778d3f84a031751e50a418c545b608b1ec82170ed4d238a9e353bf4c05978d93aeb8dbd4ac1468c21656126e73a04cd807877e0e
6
+ metadata.gz: b2ce45e4c740368df4df2ae852bdf20d2f1111fab7bcc0dc38942dd8e775fbea616172a5c598061be86d608870f0fd3f8dc5cea4c4b7ebc91f0a72989fb64d99
7
+ data.tar.gz: e0db31838aff28f73d364f356a3e73489ee73a157d1fe7a4f17dd3efcfe2b42e3229c0218e967f93ba11b6a35be14ece46e1e601fe5fa87764df50edc95b19c9
@@ -0,0 +1,36 @@
1
+ stimuli_proc : process
2
+ file F : text;
3
+ variable L: line;
4
+ variable status : file_open_status;
5
+ variable data : integer;
6
+ variable nb_samples : natural := 0;
7
+ begin
8
+
9
+ report "n (window size) = " & integer'image(n);
10
+ report "sample_width = " & integer'image(sample_width);
11
+ report "output_width = " & integer'image(output_width);
12
+
13
+ FILE_OPEN(status,F,"samples.txt",read_mode);
14
+ if status/=open_ok then
15
+ report "problem to open stimulus file samples.text" severity error;
16
+ else
17
+ sample <= to_signed(0,sample_width);
18
+ sample_valid <= '0';
19
+ wait until reset_n='1';
20
+ report "size of moving average : " & integer'image(n);
21
+ report "starting samples...";
22
+ while not(ENDFILE(f)) loop
23
+ nb_samples:=nb_samples+1;
24
+ wait until rising_edge(clk);
25
+ readline(F,l);
26
+ read(l,data);
27
+ sample <= to_signed(data,sample_width);
28
+ sample_valid <= '1';
29
+ end loop;
30
+ sample_valid <= '0';
31
+ report "end of simulation";
32
+ report integer'image(nb_samples) & " samples processed.";
33
+ end if;
34
+ running <= false;
35
+ wait;
36
+ end process;
@@ -0,0 +1,28 @@
1
+ -- procedure WRITE(L : inout LINE; VALUE : in integer; JUSTIFIED: in SIDE := right; FIELD: in WIDTH := 0);
2
+
3
+
4
+ signal o_valid : std_logic;
5
+ signal o_add : std_logic_vector(7 downto 0);
6
+
7
+ --SKIPPED
8
+
9
+ p_dump : process(i_rstb,i_clk)
10
+ file test_vector : text open write_mode is "output_file.txt";
11
+ variable row : line;
12
+ begin
13
+
14
+ if (i_rstb='0') then
15
+ -- SKIPPED
16
+ elsif(rising_edge(i_clk)) then
17
+ if(o_valid = '1') then
18
+ write(row,o_add, right, 15);
19
+
20
+ write(row,conv_integer(o_add), right, 15);
21
+ hwrite(row,o_add, right, 15);
22
+ hwrite(row,"00000000"&o_add, right, 15);
23
+
24
+ writeline(test_vector,row);
25
+
26
+ end if;
27
+ end if;
28
+ end process p_dump;
@@ -0,0 +1,63 @@
1
+ embedded_software_emulation : process
2
+ procedure clean is
3
+ begin
4
+ ce <= '0';
5
+ we <= '0';
6
+ address <= (others=>'0');
7
+ datain <= (others=>'0');
8
+ wait_cycles(1);
9
+ end procedure;
10
+
11
+ procedure write_bus(addr : unsigned; data : std_logic_vector) is
12
+ begin
13
+ wait_cycles(1);
14
+ ce <= '1';
15
+ we <= '1';
16
+ address <= addr;
17
+ datain <= data;
18
+ wait_cycles(1);
19
+ ce <= '0';
20
+ we <= '0';
21
+ address <= (others=>'0');
22
+ datain <= (others=>'0');
23
+ end procedure;
24
+
25
+ procedure read_bus(addr:unsigned) is
26
+ begin
27
+ wait_cycles(1);
28
+ ce <= '1';
29
+ we <= '0';
30
+ address <= addr;
31
+ wait_cycles(1);
32
+ ce <= '0';
33
+ address <= (others=>'0');
34
+ datain <= (others=>'0');
35
+ end procedure;
36
+
37
+ variable reg_val : unsigned(63 downto 0);
38
+ begin
39
+ clean;
40
+ report "running testbench for ip_ms_mergesort";
41
+ report "waiting for asynchronous reset";
42
+ wait until reset_n='1';
43
+ wait_cycles(10);
44
+ report "applying stimuli...";
45
+ write_bus(ADDR_REG_AP_START,x"0000000000000001");
46
+ write_bus(ADDR_REG_AP_START,x"0000000000000000");
47
+
48
+ polling: while true loop
49
+ read_bus(ADDR_REG_AP_DONE);
50
+ reg_val := unsigned(dataout);
51
+ report "dataout = " & integer'image(to_integer(reg_val(31 downto 0)));
52
+ if reg_val=x"0000000000000001" then
53
+ exit polling;
54
+ end if;
55
+ end loop;
56
+ work.tunnels.dump_memory <= true;
57
+ report "";
58
+ wait_cycles(30);
59
+ report "end of simulation";
60
+ running <=false;
61
+ wait;
62
+
63
+ end process;
data/lib/vhdl_helper.rb CHANGED
@@ -5,7 +5,7 @@ require 'optparse'
5
5
 
6
6
  class VhdlHelper
7
7
 
8
- VERSION = "0.4.1"
8
+ VERSION = "0.4.2"
9
9
 
10
10
  def initialize
11
11
  puts "-- "+"="*60
@@ -62,6 +62,7 @@ class VhdlHelper
62
62
  path=__dir__+"/templates/*.vhd"
63
63
  files=Dir[path]
64
64
  concepts=files.collect{|filename| filename.split("/").last.match(/(.*).vhd/)[1]}
65
+ concepts.sort!
65
66
  concepts.each do |concept|
66
67
  puts "- #{concept}"
67
68
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vhdl_help
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Christophe Le Lann
@@ -22,11 +22,14 @@ files:
22
22
  - lib/templates/conversions.vhd
23
23
  - lib/templates/counter.vhd
24
24
  - lib/templates/entity.vhd
25
+ - lib/templates/file_read.vhd
26
+ - lib/templates/file_write.vhd
25
27
  - lib/templates/fsm.vhd
26
28
  - lib/templates/header.vhd
27
29
  - lib/templates/memory.vhd
28
30
  - lib/templates/procedure.vhd
29
31
  - lib/templates/skeleton.vhd
32
+ - lib/templates/sw_emulation.vhd
30
33
  - lib/templates/testbench.vhd
31
34
  - lib/vhdl_helper.rb
32
35
  homepage: http://rubygems.org/gems/vhdl_help