]> git.the-white-hart.net Git - vhdl/commitdiff
Remove deprecated sim_memory
authorRyan <>
Wed, 17 Sep 2025 20:30:31 +0000 (15:30 -0500)
committerRyan <>
Wed, 17 Sep 2025 20:30:31 +0000 (15:30 -0500)
libraries/simulated/sim_memory.vhd [deleted file]
libraries/simulated/tests/test_sim_memory.vhd [deleted file]

diff --git a/libraries/simulated/sim_memory.vhd b/libraries/simulated/sim_memory.vhd
deleted file mode 100644 (file)
index be851b2..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.numeric_std.all;
-
-library std;
-use std.textio.all;
-
-
-entity sim_memory is
-       generic (
-               FILENAME: string := ""
-       );
-       port (
-               we:      in    std_logic;
-               address: in    std_logic_vector(15 downto 0);
-               data:    inout std_logic_vector(7 downto 0)
-       );
-end sim_memory;
-
-
-architecture behavioral of sim_memory is
-
-       function str_endswith(str: string; suffix: string) return boolean is
-       begin
-               if str'length < suffix'length then
-                       return false;
-               else
-                       return str(str'right - (suffix'length - 1) to str'right) = suffix;
-               end if;
-       end function;
-
-
-       -----------------------------------------------------------------
-       -- Linked-list implementation of sparsely populated list of bytes
-
-       subtype byte_t is std_logic_vector(7 downto 0);
-       type byte_array_t is array(natural range <>) of byte_t;
-       type p_byte_array_t is access byte_array_t;
-       type item_t;
-       type p_item_t is access item_t;
-
-       type sparse_t is record
-               default:   byte_t;
-               page_size: natural;
-               first:     p_item_t;
-       end record;
-
-       type item_t is record
-               base:      integer;
-               data:      p_byte_array_t;
-               next_item: p_item_t;
-       end record;
-
-
-       ----------------------------
-       -- Create a new sparse array
-       function sparse_new(default: byte_t := (others => 'U'); page_size: natural := 4096) return sparse_t is
-       begin
-               return (
-                       default   => default,
-                       page_size => page_size,
-                       first     => null
-               );
-       end function;
-
-
-       ----------------------------------
-       -- Get a value from a sparse array
-       function sparse_get(sparse: sparse_t; idx: natural) return byte_t is
-               variable base: natural;
-               variable this: p_item_t;
-       begin
-               -- Find a page that contains idx
-               base := idx - (idx mod sparse.page_size);
-               this := sparse.first;
-               while this /= null loop
-                       if this.base = base then
-                               -- Retrieve the value and exit
-                               return this.data(idx mod sparse.page_size);
-                       end if;
-                       this := this.next_item;
-               end loop;
-
-               -- No page containing idx, return the default value
-               return sparse.default;
-       end function;
-
-
-       ------------------------------------
-       -- Set a value within a sparse array
-       procedure sparse_set(sparse: inout sparse_t; idx: natural; val: byte_t) is
-               variable base:     natural;
-               variable this:     p_item_t;
-               variable new_item: p_item_t;
-       begin
-               -- Find a page that contains idx
-               base := idx - (idx mod sparse.page_size);
-               this := sparse.first;
-               while this /= null loop
-                       if this.base = base then
-                               -- Write the value and exit
-                               this.data(idx mod sparse.page_size) := val;
-                               return;
-                       end if;
-                       this := this.next_item;
-               end loop;
-
-               -- No page found containing idx, create one and add it
-               new_item := new item_t;
-
-               new_item.base      := base;
-               new_item.data      := new byte_array_t(sparse.page_size-1 downto 0);--'(others => sparse.default);
-               new_item.next_item := sparse.first;
-
-               sparse.first := new_item;
-
-               for i in 0 to sparse.page_size-1 loop
-                       new_item.data(i) := sparse.default;
-               end loop;
-               new_item.data(idx mod sparse.page_size) := val;
-       end procedure;
-
-begin
-
-       p_reset: process
-               type char_file_t is file of character;
-               subtype ibyte_t is natural range 0 to 255;
-
-               file f: char_file_t;
-               variable fstatus: FILE_OPEN_STATUS;
-
-               variable i: natural;
-               variable c: character;
-               variable b: ibyte_t;
-               variable v: byte_t;
-
-               variable mem: sparse_t;
-       begin
-               mem := sparse_new;
-
-               -- Load data from file
-               if str_endswith(FILENAME, ".bin") then
-                       -- Raw binary file
-
-                       file_open(fstatus, f, FILENAME, READ_MODE);
-                       assert fstatus = OPEN_OK report "Failed to open file '" & FILENAME & "'" severity failure;
-
-                       i := 0;
-                       while not endfile(f) loop
-                               read(f, c);
-                               b := character'pos(c);
-                               v := std_logic_vector(to_unsigned(b, 8));
-                               sparse_set(mem, i, v);
-                               report "char " & natural'image(i) & " = " & natural'image(b) & "";
-                               i := i + 1;
-                       end loop;
-
-                       file_close(f);
-
-               elsif str_endswith(FILENAME, ".hex") then
-                       -- Intel HEX format
-                       assert false report "Intel HEX format not yet supported" severity failure;
-               else
-                       assert false report "Filename suffix not recognized: '" & FILENAME & "'" severity failure;
-               end if;
-               file_close(f);
-
-               report integer'image(to_integer(unsigned(sparse_get(mem, 6))));
-               wait;
-       end process;
-
-end behavioral;
diff --git a/libraries/simulated/tests/test_sim_memory.vhd b/libraries/simulated/tests/test_sim_memory.vhd
deleted file mode 100644 (file)
index b03758c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.numeric_std.all;
-
-library work;
-use work.sim_utility.all;
-
-
-entity test_sim_memory is
-end test_sim_memory;
-
-
-architecture behavior of test_sim_memory is
-       shared variable mem: sparse_t;
-begin
-
-       p_test: process is
-       begin
-               mem := sparse_create;
-
-               sparse_load(mem, "/home/ryan/Dropbox/Projects/VHDL/libraries/simulated/tests/test.bin");
-               report integer'image(to_integer(unsigned(sparse_get(mem, 6))));
-
-               -- Done
-               wait;
-       end process;
-
-end;