├── .gitignore ├── README.md ├── TBandDesign ├── checker.sv ├── combined_top.sv ├── driver.sv ├── env.sv ├── fileReader.sv ├── hash_table.sv ├── interface.sv ├── package.sv ├── string_writer.sv ├── testcase.sv └── top.sv ├── compressor ├── Comparator.sv ├── CompressedValues.sv ├── compinput.sv ├── compinput_tb.sv ├── compressor_top.sv ├── emulation │ ├── Comparator.sv │ ├── CompressedValues.sv │ ├── MakeFile_comp │ ├── comp_if.sv │ ├── compinput.sv │ ├── compinput_tb.sv │ ├── compressor_pkg.sv │ ├── compressor_top.sv │ ├── hashFunction.sv │ ├── tableofPtr.sv │ ├── top_hdl.sv │ ├── top_tb.sv │ └── veloce.config ├── hashFunction.sv └── tableofPtr.sv ├── decompressor ├── decompressor_top.sv ├── decompressor_top_tb.sv ├── emulation │ ├── Makefile_decomp │ ├── decomp_if.sv │ ├── decompressor_pkg.sv │ ├── decompressor_top.sv │ ├── decompressor_top_tb.sv │ ├── fifo.sv │ ├── history_buffer.sv │ ├── run_decomp.do │ ├── top_hdl.sv │ ├── top_tb.sv │ ├── veloce.config │ └── veloce_config_decomp.config ├── fifo.sv └── history_buffer.sv ├── final_presentation.pptx ├── license.md ├── makefile └── test_vectors ├── GenerateVectors.py ├── VectorGenerator.py ├── argparse.py ├── basic_compression_c.bin ├── basic_compression_cw.bin ├── basic_compression_d.bin ├── generated_tv_0_c.bin ├── generated_tv_0_cw.bin ├── generated_tv_0_d.bin ├── generated_tv_10_c.bin ├── generated_tv_10_cw.bin ├── generated_tv_10_d.bin ├── generated_tv_11_c.bin ├── generated_tv_11_cw.bin ├── generated_tv_11_d.bin ├── generated_tv_12_c.bin ├── generated_tv_12_cw.bin ├── generated_tv_12_d.bin ├── generated_tv_13_c.bin ├── generated_tv_13_cw.bin ├── generated_tv_13_d.bin ├── generated_tv_14_c.bin ├── generated_tv_14_cw.bin ├── generated_tv_14_d.bin ├── generated_tv_15_c.bin ├── generated_tv_15_cw.bin ├── generated_tv_15_d.bin ├── generated_tv_16_c.bin ├── generated_tv_16_cw.bin ├── generated_tv_16_d.bin ├── generated_tv_17_c.bin ├── generated_tv_17_cw.bin ├── generated_tv_17_d.bin ├── generated_tv_18_c.bin ├── generated_tv_18_cw.bin ├── generated_tv_18_d.bin ├── generated_tv_19_c.bin ├── generated_tv_19_cw.bin ├── generated_tv_19_d.bin ├── generated_tv_1_c.bin ├── generated_tv_1_cw.bin ├── generated_tv_1_d.bin ├── generated_tv_20_c.bin ├── generated_tv_20_cw.bin ├── generated_tv_20_d.bin ├── generated_tv_21_c.bin ├── generated_tv_21_cw.bin ├── generated_tv_21_d.bin ├── generated_tv_22_c.bin ├── generated_tv_22_cw.bin ├── generated_tv_22_d.bin ├── generated_tv_23_c.bin ├── generated_tv_23_cw.bin ├── generated_tv_23_d.bin ├── generated_tv_24_c.bin ├── generated_tv_24_cw.bin ├── generated_tv_24_d.bin ├── generated_tv_25_c.bin ├── generated_tv_25_cw.bin ├── generated_tv_25_d.bin ├── generated_tv_26_c.bin ├── generated_tv_26_cw.bin ├── generated_tv_26_d.bin ├── generated_tv_27_c.bin ├── generated_tv_27_cw.bin ├── generated_tv_27_d.bin ├── generated_tv_28_c.bin ├── generated_tv_28_cw.bin ├── generated_tv_28_d.bin ├── generated_tv_29_c.bin ├── generated_tv_29_cw.bin ├── generated_tv_29_d.bin ├── generated_tv_2_c.bin ├── generated_tv_2_cw.bin ├── generated_tv_2_d.bin ├── generated_tv_30_c.bin ├── generated_tv_30_cw.bin ├── generated_tv_30_d.bin ├── generated_tv_31_c.bin ├── generated_tv_31_cw.bin ├── generated_tv_31_d.bin ├── generated_tv_32_c.bin ├── generated_tv_32_cw.bin ├── generated_tv_32_d.bin ├── generated_tv_33_c.bin ├── generated_tv_33_cw.bin ├── generated_tv_33_d.bin ├── generated_tv_34_c.bin ├── generated_tv_34_cw.bin ├── generated_tv_34_d.bin ├── generated_tv_35_c.bin ├── generated_tv_35_cw.bin ├── generated_tv_35_d.bin ├── generated_tv_36_c.bin ├── generated_tv_36_cw.bin ├── generated_tv_36_d.bin ├── generated_tv_37_c.bin ├── generated_tv_37_cw.bin ├── generated_tv_37_d.bin ├── generated_tv_38_c.bin ├── generated_tv_38_cw.bin ├── generated_tv_38_d.bin ├── generated_tv_39_c.bin ├── generated_tv_39_cw.bin ├── generated_tv_39_d.bin ├── generated_tv_3_c.bin ├── generated_tv_3_cw.bin ├── generated_tv_3_d.bin ├── generated_tv_40_c.bin ├── generated_tv_40_cw.bin ├── generated_tv_40_d.bin ├── generated_tv_41_c.bin ├── generated_tv_41_cw.bin ├── generated_tv_41_d.bin ├── generated_tv_42_c.bin ├── generated_tv_42_cw.bin ├── generated_tv_42_d.bin ├── generated_tv_43_c.bin ├── generated_tv_43_cw.bin ├── generated_tv_43_d.bin ├── generated_tv_44_c.bin ├── generated_tv_44_cw.bin ├── generated_tv_44_d.bin ├── generated_tv_45_c.bin ├── generated_tv_45_cw.bin ├── generated_tv_45_d.bin ├── generated_tv_46_c.bin ├── generated_tv_46_cw.bin ├── generated_tv_46_d.bin ├── generated_tv_47_c.bin ├── generated_tv_47_cw.bin ├── generated_tv_47_d.bin ├── generated_tv_48_c.bin ├── generated_tv_48_cw.bin ├── generated_tv_48_d.bin ├── generated_tv_49_c.bin ├── generated_tv_49_cw.bin ├── generated_tv_49_d.bin ├── generated_tv_4_c.bin ├── generated_tv_4_cw.bin ├── generated_tv_4_d.bin ├── generated_tv_50_c.bin ├── generated_tv_50_cw.bin ├── generated_tv_50_d.bin ├── generated_tv_51_c.bin ├── generated_tv_51_cw.bin ├── generated_tv_51_d.bin ├── generated_tv_52_c.bin ├── generated_tv_52_cw.bin ├── generated_tv_52_d.bin ├── generated_tv_53_c.bin ├── generated_tv_53_cw.bin ├── generated_tv_53_d.bin ├── generated_tv_54_c.bin ├── generated_tv_54_cw.bin ├── generated_tv_54_d.bin ├── generated_tv_55_c.bin ├── generated_tv_55_cw.bin ├── generated_tv_55_d.bin ├── generated_tv_56_c.bin ├── generated_tv_56_cw.bin ├── generated_tv_56_d.bin ├── generated_tv_57_c.bin ├── generated_tv_57_cw.bin ├── generated_tv_57_d.bin ├── generated_tv_58_c.bin ├── generated_tv_58_cw.bin ├── generated_tv_58_d.bin ├── generated_tv_59_c.bin ├── generated_tv_59_cw.bin ├── generated_tv_59_d.bin ├── generated_tv_5_c.bin ├── generated_tv_5_cw.bin ├── generated_tv_5_d.bin ├── generated_tv_60_c.bin ├── generated_tv_60_cw.bin ├── generated_tv_60_d.bin ├── generated_tv_61_c.bin ├── generated_tv_61_cw.bin ├── generated_tv_61_d.bin ├── generated_tv_62_c.bin ├── generated_tv_62_cw.bin ├── generated_tv_62_d.bin ├── generated_tv_63_c.bin ├── generated_tv_63_cw.bin ├── generated_tv_63_d.bin ├── generated_tv_64_c.bin ├── generated_tv_64_cw.bin ├── generated_tv_64_d.bin ├── generated_tv_65_c.bin ├── generated_tv_65_cw.bin ├── generated_tv_65_d.bin ├── generated_tv_66_c.bin ├── generated_tv_66_cw.bin ├── generated_tv_66_d.bin ├── generated_tv_67_c.bin ├── generated_tv_67_cw.bin ├── generated_tv_67_d.bin ├── generated_tv_68_c.bin ├── generated_tv_68_cw.bin ├── generated_tv_68_d.bin ├── generated_tv_69_c.bin ├── generated_tv_69_cw.bin ├── generated_tv_69_d.bin ├── generated_tv_6_c.bin ├── generated_tv_6_cw.bin ├── generated_tv_6_d.bin ├── generated_tv_70_c.bin ├── generated_tv_70_cw.bin ├── generated_tv_70_d.bin ├── generated_tv_71_c.bin ├── generated_tv_71_cw.bin ├── generated_tv_71_d.bin ├── generated_tv_72_c.bin ├── generated_tv_72_cw.bin ├── generated_tv_72_d.bin ├── generated_tv_73_c.bin ├── generated_tv_73_cw.bin ├── generated_tv_73_d.bin ├── generated_tv_74_c.bin ├── generated_tv_74_cw.bin ├── generated_tv_74_d.bin ├── generated_tv_75_c.bin ├── generated_tv_75_cw.bin ├── generated_tv_75_d.bin ├── generated_tv_76_c.bin ├── generated_tv_76_cw.bin ├── generated_tv_76_d.bin ├── generated_tv_77_c.bin ├── generated_tv_77_cw.bin ├── generated_tv_77_d.bin ├── generated_tv_78_c.bin ├── generated_tv_78_cw.bin ├── generated_tv_78_d.bin ├── generated_tv_79_c.bin ├── generated_tv_79_cw.bin ├── generated_tv_79_d.bin ├── generated_tv_7_c.bin ├── generated_tv_7_cw.bin ├── generated_tv_7_d.bin ├── generated_tv_80_c.bin ├── generated_tv_80_cw.bin ├── generated_tv_80_d.bin ├── generated_tv_81_c.bin ├── generated_tv_81_cw.bin ├── generated_tv_81_d.bin ├── generated_tv_82_c.bin ├── generated_tv_82_cw.bin ├── generated_tv_82_d.bin ├── generated_tv_83_c.bin ├── generated_tv_83_cw.bin ├── generated_tv_83_d.bin ├── generated_tv_84_c.bin ├── generated_tv_84_cw.bin ├── generated_tv_84_d.bin ├── generated_tv_85_c.bin ├── generated_tv_85_cw.bin ├── generated_tv_85_d.bin ├── generated_tv_86_c.bin ├── generated_tv_86_cw.bin ├── generated_tv_86_d.bin ├── generated_tv_87_c.bin ├── generated_tv_87_cw.bin ├── generated_tv_87_d.bin ├── generated_tv_88_c.bin ├── generated_tv_88_cw.bin ├── generated_tv_88_d.bin ├── generated_tv_89_c.bin ├── generated_tv_89_cw.bin ├── generated_tv_89_d.bin ├── generated_tv_8_c.bin ├── generated_tv_8_cw.bin ├── generated_tv_8_d.bin ├── generated_tv_90_c.bin ├── generated_tv_90_cw.bin ├── generated_tv_90_d.bin ├── generated_tv_91_c.bin ├── generated_tv_91_cw.bin ├── generated_tv_91_d.bin ├── generated_tv_92_c.bin ├── generated_tv_92_cw.bin ├── generated_tv_92_d.bin ├── generated_tv_93_c.bin ├── generated_tv_93_cw.bin ├── generated_tv_93_d.bin ├── generated_tv_94_c.bin ├── generated_tv_94_cw.bin ├── generated_tv_94_d.bin ├── generated_tv_95_c.bin ├── generated_tv_95_cw.bin ├── generated_tv_95_d.bin ├── generated_tv_96_c.bin ├── generated_tv_96_cw.bin ├── generated_tv_96_d.bin ├── generated_tv_97_c.bin ├── generated_tv_97_cw.bin ├── generated_tv_97_d.bin ├── generated_tv_98_c.bin ├── generated_tv_98_cw.bin ├── generated_tv_98_d.bin ├── generated_tv_99_c.bin ├── generated_tv_99_cw.bin ├── generated_tv_99_d.bin ├── generated_tv_9_c.bin ├── generated_tv_9_cw.bin ├── generated_tv_9_d.bin ├── manual_tv_0_c.bin ├── manual_tv_0_cw.bin ├── manual_tv_0_d.bin ├── manual_tv_1_c.bin ├── manual_tv_1_cw.bin ├── manual_tv_1_d.bin ├── manual_tv_2_c.bin ├── manual_tv_2_cw.bin ├── manual_tv_2_d.bin ├── manual_tv_3_c.bin ├── manual_tv_3_cw.bin ├── manual_tv_3_d.bin ├── manual_tv_4_c.bin ├── manual_tv_4_cw.bin ├── manual_tv_4_d.bin ├── manual_tv_5_c.bin ├── manual_tv_5_cw.bin ├── manual_tv_5_d.bin ├── manual_tv_6_c.bin ├── manual_tv_6_cw.bin ├── manual_tv_6_d.bin ├── manual_tv_7_c.bin ├── manual_tv_7_cw.bin ├── manual_tv_7_d.bin ├── manual_tv_8_c.bin ├── manual_tv_8_cw.bin ├── manual_tv_8_d.bin ├── manual_tv_9_c.bin ├── manual_tv_9_cw.bin ├── manual_tv_9_d.bin └── manual_tvs.txt /.gitignore: -------------------------------------------------------------------------------- 1 | *.project 2 | *.svproject 3 | test_vectors/.idea/misc.xml 4 | test_vectors/.idea/modules.xml 5 | test_vectors/.idea/test_vectors.iml 6 | test_vectors/__pycache__/VectorGenerator.cpython-36.pyc 7 | test_vectors/.idea/workspace.xml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lzrw1-compression-core 2 | This is the repository for a verilog version of the lzrw1 compression core. The goal of this project was to make both a compressor and decompressor core that uses the LZRW1 compression algorithm. We also managed to integrate both the cores into a single module(combined_top.sv) and test them in a feedthrough fashion with the top-level testbench. 3 | 4 | The project is loosely based on the VHDL compressor found at http://opencores.org/project,lzrw1-compressor-core. However, it was designed from scratch. 5 | 6 | 7 | ## Authors 8 | 9 | The authors of this core are Manas Karanjekar (ManasK7), Mark Chernishoff (markcherni), and Parker Ridd (pbridd). The core was made for ECEn 571, Introduction to SystemVerilog, at Portland State University. 10 | 11 | Contact for compressor: Mark Chernishoff 12 | 13 | Contact for decompressor: Parker Ridd 14 | 15 | Contact for combined testbench: Manas Karanjekar 16 | 17 | ## Design 18 | 19 | ### Overview 20 | 21 | This design includes a compressor core (under the compressor folder), a decompressor core (under the decompressor folder), and a high-level testbench. 22 | 23 | #### Compressor 24 | 25 | This design takes a string and compresses it using the LZRW1 algorithm. When the valid signal goes high, 26 | data in 16 byte chunks is expected to be at the input of CurBytes. The outputs afte compression completes 27 | is an array of compressed values name compArray and an array of control bits named ControlWord. 28 | 29 | While inputs are received, the compressor starts going to work on the CurBytes being fed into the input. 30 | The first 3 bytes starting at the char byte pointer are fed into the hash function to convert to a 12 bit 31 | address that access a table of pointers. If the entry is null, the current byte pointer is placed inside the 32 | entry. If it is not null the old entry is the old byte position that had the same address and more likely that 33 | it has the same 3 bytes as the current 3 bytes. If that is the case, a comparison up to 16 bytes is made starting 34 | at the old byte position to 16 bytes past the new byte position. A length is returned from this comparison and an 35 | offset is calculated from old byte position to current byte position. 36 | 37 | If the table entry is null a control bit is set low and the output compArray gets the current byte at the current 38 | byte position. If the entry is not null and the bytes match between 3 to 16 bytes, then the length is concatenated 39 | with the offset to form a 16 bit word. This 16 word is placed in the compArray. When the byte pointer reaches the end 40 | of the string a Done signal goes high, saying its complete. A reset is then needed to input new strings. 41 | 42 | #### Decompressor 43 | 44 | This module decompresses data that has been compressed using a LZRW1 algorithm. It accepts one piece of 45 | compressed data every time data_in_valid is driven high, and outputs one byte of data every clock cycle 46 | out_valid is 1'b1. 47 | 48 | When the control word is high, data_in_valid is high, and the compressor isn't busy, the decompressor 49 | will go into the DECOMPRESS state. In this state, the decompressor will use the high four bits of the 50 | data_in input to find the length of the compressed data (up to 15 bytes) and the low twelve bits to 51 | get the offset. It has an offset range of 4095 bytes. It outputs a distinct byte of data on deompressed_byte 52 | for every cycle out_valid is 1'b1, and then goes back to the IDLE state after it is done, at which point 53 | it can accept new data. 54 | 55 | If the conditions above are met with the exception of control_word_in being 1'b0, the decompressor will simply 56 | pass the byte through while writing the applicable space in its history memory. out_valid will go high for one 57 | cycle to allow the byte to be passed through. After that one clock cycle, it will go back to the IDLE state. 58 | 59 | #### Top level testbench 60 | 61 | The top-level testbench is an object-oriented testbench that generates a 'test_input.txt' file, which contains randomly generated strings, with the degree of randomization and repetition of alphabets being decided by a randcase statement. The driver module takes this txt file and drives 16-bytes at a time(i.e. at posedge of clock) into the DUT. After the DUT is reset and initialized, we drive these 16-byte chunks, and ideally, we should see the output stream of bytes to match the input string. SystemVerilog concepts such as interfaces, polymorphism, constrained randomization with weighted distributions, string operations and general Object Oriented Programming were learnt and deployed in this top-level testbench. 62 | 63 | ## Progress 64 | 65 | ### Compressor 66 | 67 | #### Validation 68 | 69 | The compressor has been successfully validated using its standalone testbench. The testbench consists of feeding in an input string and outputting compressed data. Many assertions are checked in the testbench and the number is printed out when the string has finished being compressed. 70 | 71 | #### Emulation 72 | The compressor has been successfully emulated on the Veloce platform using the TBX mode of emulation. 73 | 74 | ### Decompressor 75 | 76 | #### Validation 77 | 78 | The decompressor has been successfully validated using manual test vectors that examine corner cases (including 256 repeating characters) as well as real text from websites and books. In addition, the testbench drives random generated strings into the decompressor and checks it against the original data. Errors are recorded and reported. A python3 program is included that can generate new random testvectors as well as manual testvectors given in test_vectors/manual_tvs.txt and line delimited. 79 | 80 | #### Emulation 81 | 82 | The basic framework has been laid down for decompressor to run in tbx mode and the decompressor modules were synthesized, but no attempt was made to run the testbench in this mode due to time constraints. 83 | 84 | ### Top testbench 85 | 86 | A testbench has been created that instantiates both the compressor and decompressor. This testbench successfully generates random values and drives them into the compressor, and then the top-level dut drives values into the decompressor. The decompressed characters are then collected by the testbench and compared to the original stimulus, and the testbench indicates whether they match. 87 | 88 | ## Running the design 89 | 90 | ### Prerequisites: 91 | 92 | 1. You must be on a machine that has QuestaSim installed and has access to the commmandline 93 | 94 | 2. You must be on a linux machine 95 | 96 | 3. To run the python testbench make stage (optional because randomly generated vectors have been provided), you must have python 3 installed on your computer 97 | 98 | ### Running the standalone compressor testbench 99 | 100 | To run the compressor testbench, use the folliwing steps: 101 | 102 | 1. cd into the root of this repository 103 | 104 | 2. Run `make run_compressor_testbench` 105 | 106 | 3. Once questasim is launched via commandline, enter `run -all`. 107 | 108 | 4. If the test was successful, you should see output that contains the number of assertions checked, the input string, and the compressed output. 109 | 110 | ### Emulating the compressor 111 | 112 | 1. Log onto the veloce machine 113 | 114 | 2. cd into compressor/emulation 115 | 116 | 3. run `make -f Makefile_comp` 117 | 118 | ### Running the standalone decompressor testbench 119 | 120 | To run the decompressor testbench, use the following steps 121 | 122 | 1. (optional & requires python 3 to be installed) 123 | : Run `make create_test_vectors` while cd'd into the root of this repository. 124 | 125 | 2. Run `make run_decompressor_testbench` 126 | 127 | 3. Once questasim is launched via commandline, enter `run -all` 128 | 129 | 4. If the test was successful, you should see this output: 130 | 131 | ```# Total tests failed was 0 out of 10 manual tests + 100 automatically generated tests``` 132 | 133 | ### Running the integrated testbench 134 | 135 | 1. cd into the root of this repository 136 | 137 | 2. Run `make run_top_testbench` 138 | 139 | 3. Once questasim is launched via commandline, enter `run -all` 140 | 141 | 4. The test will show inputs being driven into the compressor, and then will show the input/output strings that were compared. Finally, it will indicate whether the strings match. If they do, the test passed. 142 | -------------------------------------------------------------------------------- /TBandDesign/checker.sv: -------------------------------------------------------------------------------- 1 | class myChecker; 2 | string str_out = ""; 3 | string str_in = ""; 4 | 5 | /* Declaring virtual interfaces */ 6 | //virtual input_interface.IP input_intf; 7 | virtual output_interface.OP output_intf; 8 | 9 | 10 | function new(virtual output_interface.OP output_intf_new); 11 | //this.input_intf = input_intf_new; 12 | this.output_intf = output_intf_new; 13 | endfunction; 14 | 15 | 16 | function read_data; 17 | string next_char; 18 | int file_handle,j; 19 | file_handle = $fopen("test_input.txt","r"); // Open the file in read mode 20 | while(!$feof(file_handle)) 21 | begin 22 | j = $fscanf(file_handle,"%c",next_char); // Read one character at a time into next_char 23 | str_in = {str_in,next_char}; // Keep concatenating the next read character to the global string 24 | //$display("-D Global string is %s",str_in); 25 | end 26 | 27 | if($feof(file_handle)) 28 | begin 29 | //done = 1'b1; 30 | end 31 | endfunction : read_data 32 | 33 | 34 | 35 | 36 | task wait_for_end(); 37 | $display("-D Inside wait_for_end function"); 38 | while(output_intf.cb.finished_cycle==0) 39 | begin 40 | @(negedge output_intf.clock) 41 | if(output_intf.cb.out_valid==1) 42 | begin 43 | str_out = {str_out,string'(output_intf.cb.decompressed_byte)}; 44 | end 45 | //$display("-D Output string is :"); 46 | //$display("%s",str_out); 47 | end 48 | 49 | endtask 50 | 51 | 52 | function start_comparison(); 53 | //int errors; 54 | //errors=0; 55 | int flag=1'b0; 56 | /* Check if string lengths are equal */ 57 | if(str_out.len()!=str_in.len()) 58 | begin 59 | str_in = str_in.substr(0,str_out.len()); 60 | $display("-D Input string is :"); 61 | $display("-D ///////////////////////////////"); 62 | $display("INPUT STRING :"); 63 | $display("%p",str_in); 64 | $display("OUTPUT STRING :"); 65 | $display("%p",str_out); 66 | 67 | $display("-D ///////////////////////////////"); 68 | 69 | //$display("%s",str_in); 70 | end 71 | 72 | /* Check the input and the output strings */ 73 | flag = str_in.compare(str_out) ; 74 | $display("-D Value of flag=%d",flag); 75 | if(flag!=1) 76 | $display("-D Decompressed string not same as compressed string"); 77 | else 78 | $display("-D The compressed and the decompressed strings are the same"); 79 | 80 | endfunction 81 | 82 | endclass 83 | -------------------------------------------------------------------------------- /TBandDesign/combined_top.sv: -------------------------------------------------------------------------------- 1 | module combined_top( 2 | clock, 3 | reset, 4 | valid, 5 | CurByte, 6 | //done, 7 | decompressed_byte, 8 | out_valid, 9 | finished_cycle 10 | ); 11 | 12 | parameter STRINGSIZE = 4096; 13 | parameter TABLESIZE = 4096; 14 | parameter RANDTABLE = 16523; 15 | localparam TABLE_ADDRESS_WIDTH = $clog2(TABLESIZE); 16 | 17 | //typedefs 18 | typedef enum { 19 | RESET, 20 | COMPRESS, 21 | DECOMPRESS, 22 | DONE 23 | } combined_state_type; 24 | 25 | 26 | //I/O declarations 27 | input clock, reset, valid; //,done; 28 | input [15:0] [7:0] CurByte; 29 | output [7:0] decompressed_byte; 30 | output logic out_valid,finished_cycle; 31 | 32 | // intermediate signals 33 | logic c_Done; 34 | logic[STRINGSIZE-1:0][7:0] compArray; 35 | logic[STRINGSIZE-1:0] c_controlWord; 36 | logic[15:0] d_data_in; 37 | logic d_control_word_in; 38 | logic d_data_in_valid; 39 | integer unsigned c_controlPtr; 40 | integer unsigned internal_controlPtr, internal_controlPtr_next; 41 | integer unsigned internal_dataPtr, internal_dataPtr_next; 42 | logic d_out_valid; 43 | logic decompressor_busy; 44 | 45 | // state storage 46 | combined_state_type comb_state, comb_state_next; 47 | /* MK -> c_Done was only connected to the compressor's input done signal, but the main module itself was not having the done as an input signal */ 48 | //assign c_Done=done; 49 | 50 | always_ff @(posedge clock or posedge reset) begin : proc_load_data 51 | if(reset) begin 52 | comb_state <= RESET; //COMPRESS; 53 | internal_controlPtr <= '0; 54 | internal_dataPtr <= '0; 55 | end else begin 56 | comb_state <= comb_state_next; 57 | internal_controlPtr <= internal_controlPtr_next; 58 | internal_dataPtr <= internal_dataPtr_next; 59 | end 60 | end 61 | 62 | always_comb begin 63 | comb_state_next = comb_state; 64 | internal_controlPtr_next = internal_controlPtr; 65 | internal_dataPtr_next = internal_dataPtr; 66 | d_data_in = '0; 67 | d_control_word_in = '0; 68 | d_data_in_valid = 1'b0; 69 | finished_cycle = 1'b0; 70 | 71 | case(comb_state) 72 | RESET : 73 | begin 74 | if(reset == 1'b1) 75 | comb_state_next = RESET; 76 | else 77 | comb_state_next = COMPRESS; 78 | end 79 | 80 | COMPRESS: 81 | begin 82 | /* MK-> internal_controlPtr was not incrementing in the compArray */ 83 | //internal_controlPtr_next = internal_controlPtr + 1; 84 | if(valid == 1'b0 && c_Done) 85 | comb_state_next = DECOMPRESS; 86 | end 87 | DECOMPRESS: begin 88 | d_control_word_in = c_controlWord[internal_controlPtr]; 89 | if(!decompressor_busy) begin 90 | d_data_in_valid = 1'b1; 91 | internal_controlPtr_next = internal_controlPtr + 1; 92 | //figure out whether to pull one or two bytes from the table 93 | //if(compArray[internal_controlPtr] == 1'b0) begin 94 | if(c_controlWord[internal_controlPtr] == 1'b0) begin 95 | d_data_in = {8'b00000000, compArray[internal_dataPtr]}; 96 | internal_dataPtr_next = internal_dataPtr + 1; 97 | end 98 | else begin 99 | d_data_in = {compArray[internal_dataPtr], compArray[internal_dataPtr+1]}; 100 | internal_dataPtr_next = internal_dataPtr + 2; 101 | end 102 | end 103 | 104 | if((c_controlPtr == internal_controlPtr) && d_out_valid) 105 | comb_state_next = DONE; 106 | end 107 | DONE: 108 | finished_cycle = 1'b1; 109 | endcase 110 | end 111 | 112 | 113 | 114 | assign out_valid = d_out_valid; 115 | 116 | 117 | // module instantiations 118 | compressor_top #( 119 | .STRINGSIZE(STRINGSIZE), 120 | .TABLESIZE(TABLESIZE) 121 | ) 122 | compressor( 123 | .clock(clock), 124 | .reset(reset), 125 | .valid(valid), 126 | .CurByte(CurByte), 127 | .compArray(compArray), 128 | .controlWord(c_controlWord), 129 | .Done(c_Done), // MK-> Avoiding multiply driven signals 130 | //.uniqnums(), 131 | .controlPtr(c_controlPtr) 132 | ); 133 | decompressor_top #( 134 | .HISTORY_SIZE(STRINGSIZE) 135 | ) 136 | decompressor( 137 | .clock(clock), 138 | .reset(reset), 139 | .data_in(d_data_in), 140 | .control_word_in(d_control_word_in), 141 | .data_in_valid(d_data_in_valid), 142 | .decompressed_byte(decompressed_byte), 143 | .out_valid(d_out_valid), 144 | .decompressor_busy(decompressor_busy) 145 | ); 146 | 147 | 148 | endmodule // combined_top 149 | -------------------------------------------------------------------------------- /TBandDesign/driver.sv: -------------------------------------------------------------------------------- 1 | //`include "fileReader.sv" 2 | //`include "string_writer.sv" 3 | class driver; 4 | /* Create objects of class file_reader and string_writer */ 5 | file_reader fr; 6 | text_writer tw; 7 | int no_of_words; 8 | 9 | /* Declaring interface */ 10 | virtual input_interface.IP input_intf; 11 | 12 | function new(virtual input_interface.IP input_intf_new); 13 | this.input_intf = input_intf_new; 14 | endfunction 15 | 16 | 17 | task start(); 18 | $display("-D\t Inside start method of the driver"); 19 | /* We first generate a test file */ 20 | tw = new; // Create object and allocate memory 21 | fr = new(input_intf); // Create object and allocate memory 22 | 23 | randcase 24 | 10 : begin 25 | completely_random cr; 26 | cr = new(); 27 | tw = cr; 28 | cr.randomize(); 29 | no_of_words = cr.no_of_characters; 30 | for(int i=0;i> 4; 38 | hash_index = (12'(seed_val) * (index_part_3)) & 12'hFFF; 39 | end 40 | 41 | /* Sequential logic to check for value pointed and updation */ 42 | always_ff @(posedge clk) 43 | begin 44 | offset <= hash_table[hash_index]; 45 | 46 | /* If the offset value from the hash_table is less than 4096, then 47 | the new entry in the hash_table is the current byte position minus the offset, and the word is a copy item, so we set the control bit to 1 */ 48 | if(offset<4096) 49 | begin 50 | hash_table[hash_index] <= bytePos - offset; 51 | control_Bit <= 1'b1; // Copy item 52 | end 53 | 54 | /* If the offset value from the hash_table is greater than 4096, then it is a literal, so set control bit to 0, and offset is the present byte position 55 | */ 56 | 57 | else 58 | begin 59 | hash_table[hash_index] <= bytePos; 60 | control_Bit <= 1'b0; // Literal item 61 | CurByte <= byte1; // We need to transmit the current byte if it is a literal? 62 | end 63 | end 64 | endmodule : hash_table 65 | 66 | -------------------------------------------------------------------------------- /TBandDesign/interface.sv: -------------------------------------------------------------------------------- 1 | interface input_interface(input bit clock); 2 | logic reset; 3 | logic valid; 4 | logic [15:0] [7:0] CurByte; 5 | //logic done; 6 | 7 | clocking cb@(posedge clock); 8 | output reset; 9 | output valid; 10 | //output done; 11 | output CurByte; 12 | endclocking 13 | 14 | modport IP(clocking cb,input clock); 15 | 16 | endinterface 17 | 18 | interface output_interface(input bit clock); 19 | logic [7:0] decompressed_byte; 20 | logic out_valid; 21 | logic finished_cycle; 22 | 23 | clocking cb@(posedge clock); 24 | input decompressed_byte; 25 | input out_valid; 26 | input finished_cycle; 27 | endclocking 28 | 29 | modport OP(clocking cb,input clock); 30 | 31 | endinterface 32 | 33 | -------------------------------------------------------------------------------- /TBandDesign/package.sv: -------------------------------------------------------------------------------- 1 | package topPkg; 2 | 3 | `include "fileReader.sv" 4 | `include "string_writer.sv" 5 | `include "driver.sv" 6 | `include "env.sv" 7 | `include "testcase.sv" 8 | 9 | 10 | endpackage : topPkg 11 | -------------------------------------------------------------------------------- /TBandDesign/testcase.sv: -------------------------------------------------------------------------------- 1 | //`include "env.sv" 2 | program testcase(input_interface.IP input_intf,output_interface.OP output_intf); 3 | 4 | Environment env1; 5 | initial 6 | begin 7 | $display("******************** Start of testcase*************************"); 8 | env1 = new(input_intf,output_intf); 9 | //env1=new(); 10 | env1.run(); 11 | #1000; 12 | end 13 | 14 | final 15 | $display("*************** End of testcase **********************"); 16 | 17 | endprogram 18 | 19 | 20 | -------------------------------------------------------------------------------- /TBandDesign/top.sv: -------------------------------------------------------------------------------- 1 | `include "TBandDesign/combined_top.sv" 2 | `include "TBandDesign/fileReader.sv" 3 | `include "TBandDesign/string_writer.sv" 4 | `include "TBandDesign/driver.sv" 5 | `include "TBandDesign/checker.sv" 6 | `include "TBandDesign/env.sv" 7 | `include "TBandDesign/testcase.sv" 8 | `include "TBandDesign/interface.sv" 9 | //`include "package.sv" 10 | //import topPkg::*; 11 | module top(); 12 | 13 | bit clock; 14 | 15 | initial 16 | forever #10 clock = ~clock; 17 | 18 | /* Input interface */ 19 | input_interface input_intf(clock); 20 | 21 | /* Output interface */ 22 | output_interface output_intf(clock); 23 | 24 | /* Program block Testcase instance */ 25 | testcase TC (input_intf,output_intf); 26 | 27 | /* Instantiating and connecting the DUT */ 28 | combined_top DUT( 29 | .clock(input_intf.clock), 30 | .reset(input_intf.reset), 31 | .valid(input_intf.valid), 32 | .CurByte(input_intf.CurByte), // Current Byte to be sent to compressor 33 | .decompressed_byte(output_intf.decompressed_byte), // Decompressed output 34 | .out_valid(output_intf.out_valid), 35 | .finished_cycle(output_intf.finished_cycle) 36 | ); 37 | 38 | 39 | endmodule : top 40 | -------------------------------------------------------------------------------- /compressor/Comparator.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the comparator input for the compressor portion of the design. 3 | This compares amount of bytes that are the same. 4 | 5 | input ControlBit; used for debug 6 | input BytesAtOffset; bytes at offset to compare 7 | input NextBytes; Current 16 bytes to compare 8 | output Length; amount of total chars that are the same between CurBytes and the toCompare(bytes at offset) 9 | 10 | 11 | Portland State University 12 | ECE571 Final Project 13 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 14 | 15 | */ 16 | 17 | module Comparator( 18 | input [15:0] [7:0] CurBytes,BytesAtOffset, // from input history 19 | input ControlBit, reset, // ControlBit from table 20 | output logic [3:0] Length); 21 | 22 | int count; 23 | 24 | always_comb begin 25 | 26 | if (reset) begin 27 | Length = '0; 28 | count = 0; 29 | end 30 | else //if (ControlBit) begin 31 | begin 32 | count = 0; 33 | for (int i = 0; i < 16; i++) begin 34 | if(CurBytes[i] == BytesAtOffset[i]) count++; 35 | else begin 36 | Length = count; 37 | break; 38 | end 39 | end 40 | end 41 | //else Length <= '0; 42 | end 43 | endmodule -------------------------------------------------------------------------------- /compressor/CompressedValues.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the is the module that handles adding literal (OneByte) or {length,offset} 3 | to the compArray. 4 | 5 | input OneByte; byte to add to compArray 6 | input Offset; offset from tableofPtr's 7 | input Length; amount of total chars that are the same between CurBytes and the toCompare(bytes at offset) 8 | input ControlBit; added to controlWord array 9 | output compArray; an array of compressed characters 10 | output countrolWord; an array of 0's and 1's 11 | output controlPtr; used for assertions 12 | output compressPtr; used for assertions 13 | input Done; end of string reached 14 | 15 | Portland State University 16 | ECE571 Final Project 17 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 18 | 19 | */ 20 | 21 | module CompressedValues (clock, reset, Done, length, Offset, OneByte, controlBit, compArray, controlWord,controlPtr,compressPtr); 22 | parameter STRINGSIZE = 4096; 23 | 24 | input clock, reset, Done; 25 | input [3:0] length; // from comparator 26 | input [11:0] Offset; // from table 27 | input [7:0] OneByte; // from table 28 | input controlBit; // from table 29 | /*intf compArray,*/ 30 | output logic [STRINGSIZE-1:0] [7:0] compArray; 31 | output logic [STRINGSIZE-1:0] controlWord; 32 | 33 | output integer controlPtr; 34 | output integer compressPtr; 35 | 36 | 37 | always_ff @(posedge clock) begin 38 | if (reset) begin 39 | compArray <= '0; 40 | controlWord <= '0; 41 | controlPtr = 0; 42 | compressPtr = 0; 43 | end 44 | 45 | else if (controlBit && Done == 0) begin 46 | compArray[compressPtr] <= {length,Offset[11:8]}; 47 | compArray[compressPtr+1] <= Offset[7:0]; 48 | compressPtr <= compressPtr+2; 49 | controlWord[controlPtr] <= controlBit; 50 | controlPtr <= controlPtr + 1; 51 | end 52 | else if (!Done && !controlBit) begin 53 | compArray[compressPtr] <= OneByte; 54 | compressPtr <= compressPtr + 1; 55 | controlWord[controlPtr] <= controlBit; 56 | controlPtr <= controlPtr + 1; 57 | end 58 | else begin 59 | compressPtr <= compressPtr; 60 | controlPtr <= controlPtr; 61 | end 62 | end 63 | 64 | 65 | endmodule -------------------------------------------------------------------------------- /compressor/compinput.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the compressor input for the compressor portion of the design. 3 | input valid; when high save data in myHistory 4 | input CurByte; 16 bytes from uncompressed string 5 | input offset; old offset from tableofPtr's 6 | input Length; amount of total chars that are the same between CurBytes and the toCompare(bytes at offset) 7 | output toCompare; bytes at offset to compare 8 | output NextBytes; Current 16 bytes to compare 9 | output toHash; 3 bytes to send to hash function 10 | output bytePtr; current char position 11 | output Done; end of string reached 12 | 13 | Portland State University 14 | ECE571 Final Project 15 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 16 | 17 | */ 18 | module compinput( 19 | input clock, reset, valid, 20 | input [15:0] [7:0] CurByte, 21 | input [11:0] offset , 22 | input [3:0] Length, 23 | output logic [15:0] [7:0] toCompare, 24 | output logic [15:0] [7:0] NextBytes, 25 | output logic [23:0] toHash, 26 | output bit Done, 27 | output integer bytePtr); 28 | 29 | parameter HISTORY = 4096; 30 | 31 | logic [HISTORY-1:0] [7:0] myHistory = '0; 32 | logic [11:0] bytePointer = 0; 33 | integer count = 0; 34 | integer s_offset; 35 | integer j,k; 36 | 37 | byte valueHistory; 38 | 39 | assign s_offset = (!reset) ? integer' (offset) : '0 ; 40 | 41 | always_ff @(posedge clock) begin 42 | 43 | if (reset) begin 44 | bytePointer <= 0; 45 | count <= 0; 46 | myHistory <= '0; 47 | Done <= 1; 48 | end 49 | else if(!valid && 0 == myHistory[bytePointer+1]) Done <= 1; 50 | else begin 51 | 52 | // increment byte pointer if not at end of string 53 | // add current byte to history 54 | 55 | if(valid && (bytePointer < HISTORY)) begin 56 | Done <= 0; 57 | myHistory[count+1 +: 17] <= CurByte ; 58 | count <= count + 16; 59 | end 60 | 61 | else count <= count; 62 | // if first 3 bytes recieved, send to hash function 63 | if(Length >= 3) bytePointer <= bytePointer + Length; 64 | else bytePointer <= bytePointer + 1; 65 | 66 | end 67 | end 68 | 69 | always_comb begin 70 | if(reset) begin 71 | toHash = '0; 72 | toCompare = '0; 73 | NextBytes = '0; 74 | end 75 | else if (bytePointer >= 1) begin 76 | toHash = {myHistory[bytePointer],myHistory[bytePointer+1],myHistory[bytePointer+2]}; 77 | end 78 | else toHash = toHash; 79 | if ((myHistory[bytePointer] != 0) && (bytePointer - s_offset) > 15 && s_offset > 0 ) begin 80 | toCompare = myHistory[(s_offset) +: 16]; 81 | NextBytes = myHistory[bytePointer +: 16]; 82 | end 83 | else if ((myHistory[bytePointer] != 0) && (bytePointer - s_offset) <= 15 && s_offset > 0 ) begin 84 | j = 0; 85 | for(int i = 0; i < bytePointer - offset; i++) begin 86 | if(j < 16) begin 87 | toCompare[j] = myHistory[offset+j]; 88 | j++; 89 | /*toCompare[0] = myHistory[offset]; 90 | toCompare[1] = myHistory[offset+1]; 91 | toCompare[2] = myHistory[offset+2]; 92 | toCompare[3] = myHistory[offset+3]; 93 | toCompare[4] = myHistory[offset+4]; 94 | toCompare[5] = myHistory[offset+5]; 95 | toCompare[6] = myHistory[offset+6]; 96 | toCompare[7] = myHistory[offset+7]; 97 | toCompare[8] = myHistory[offset+8]; 98 | toCompare[9] = myHistory[offset+9]; 99 | toCompare[10] = myHistory[offset+10]; 100 | toCompare[11] = myHistory[offset+11]; 101 | toCompare[12] = myHistory[offset+12]; 102 | toCompare[13] = myHistory[offset+13]; 103 | toCompare[14] = myHistory[offset+14]; 104 | toCompare[15] = myHistory[offset+15];*/ 105 | end 106 | //NextBytes = myHistory[bytePointer +: 16]; 107 | end 108 | 109 | end 110 | else toCompare = '0; 111 | k = 0; 112 | if (bytePointer+16 <= HISTORY) NextBytes = myHistory[bytePointer +: 16]; 113 | else if(HISTORY-bytePointer <= 0) NextBytes = '0; 114 | else begin 115 | NextBytes = '0; 116 | for(int i = 0; i <= HISTORY -bytePointer; i++) begin 117 | NextBytes[k] = myHistory[bytePointer + k]; 118 | k++; 119 | end 120 | end 121 | end 122 | assign bytePtr = bytePointer; 123 | assign valueHistory = myHistory[bytePointer]; 124 | 125 | endmodule 126 | -------------------------------------------------------------------------------- /compressor/compinput_tb.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the testbench for the compressor portion of the design. 3 | input s; a string of characters 4 | output compArray; an array of compressed characters 5 | output countrolWord; an array of 0's and 1's 6 | 7 | Portland State University 8 | ECE571 Final Project 9 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 10 | 11 | */ 12 | module compinput_tb (); 13 | parameter STRINGSIZE = 350; 14 | parameter TABLESIZE = 4096; 15 | parameter RANDTABLE = 4095; 16 | localparam delay = 5ns; 17 | bit clock, reset, valid; 18 | logic [15:0] [7:0] CurByte; 19 | bit Done; 20 | logic[RANDTABLE:0][11:0] uniqnums; 21 | logic [STRINGSIZE - 1:0] controlWord; 22 | logic [STRINGSIZE-1:0][7:0] compArray; 23 | logic [STRINGSIZE -1:0][7:0] testString; 24 | 25 | integer nums; 26 | int newPtr; 27 | logic [7:0] newByte; 28 | compressor_top #(STRINGSIZE,TABLESIZE) ctop (clock,reset,valid,CurByte,Done,compArray,controlWord); 29 | int assertions_cnt; 30 | 31 | string s; 32 | int k; 33 | int m; 34 | initial begin 35 | clock = 0; 36 | reset = 1; 37 | #(2*delay) reset = 0; 38 | 39 | end 40 | 41 | always begin 42 | #delay 43 | clock <= ~clock; 44 | end 45 | 46 | initial begin 47 | k = 0; 48 | m = 0; 49 | 50 | $display("...Starting input"); 51 | wait (!reset && clock); 52 | //#(2*delay); 53 | 54 | s = "daddy finger daddy finger where are you, here I am, here I am where are you.\n new line\0"; 55 | // s = "When Munch died in January 1944, it transpired that he had unconditionally bequeathed all his remaining works to the City of Oslo. Edvard Munch's art is the most significant Norwegian contribution to the history of art, and he is the only Norwegian artist who has exercised a decisive influence on European art trends, above all as a pioneer of"; 56 | 57 | k = 0; 58 | for(int i = 0; i < STRINGSIZE; i++) begin 59 | testString[k] = s.getc(k); 60 | k++; 61 | end 62 | valid = 1; 63 | for (int i = 0; m < STRINGSIZE ; i++) begin 64 | 65 | CurByte = (testString[m +:16]); 66 | 67 | @(posedge clock) 68 | m = m + 16; 69 | end 70 | 71 | valid = 0; 72 | 73 | wait (Done) 74 | $display("Input string= %s", s); 75 | $display("Compressed string= %s",{<< byte {compArray}}); 76 | $display("amount of assertions checked = %d", assertions_cnt); 77 | reset = 1; 78 | #(4*delay) reset = 0; 79 | end 80 | 81 | 82 | // used for assertion properties 83 | always begin 84 | 85 | @(posedge clock) newPtr = (ctop.length+ctop.bytePtr); 86 | newByte = ctop.CV.OneByte; 87 | 88 | end 89 | 90 | //////////////////////////// 91 | // assertion properties 92 | 93 | property p_bytePtr; 94 | @(negedge clock) 95 | disable iff(reset || Done) 96 | (ctop.length >= 3) |=> newPtr == ctop.bytePtr; 97 | 98 | endproperty 99 | a_bytePtr: assert property (p_bytePtr) assertions_cnt++; 100 | 101 | property p_tableEntry; 102 | @(negedge clock) 103 | disable iff(reset) 104 | (ctop.ControlBit) |-> (ctop.comp.offset > 0); 105 | 106 | endproperty 107 | a_tableEntry: assert property (p_tableEntry) assertions_cnt++; 108 | 109 | property p_offsetnotzero; 110 | @(negedge clock) 111 | disable iff(reset || Done) 112 | (ctop.ControlBit) |-> ((ctop.tob.BytePosition - ctop.comp.offset) == ctop.Offset); 113 | endproperty 114 | a_offsetnotzero: assert property (p_offsetnotzero) assertions_cnt++; 115 | 116 | property p_lengthnotzero; 117 | @(negedge clock) 118 | disable iff(reset || Done || ctop.length < 3) 119 | (ctop.ControlBit) |-> (ctop.length >= 3); 120 | endproperty 121 | a_lengthnotzero: assert property (p_lengthnotzero) assertions_cnt++; 122 | 123 | property p_outputwhenlow; 124 | @(negedge clock) 125 | disable iff(reset || Done || ctop.CV.compressPtr == 0 || newByte === 0) 126 | (!ctop.ControlBit) |-> (compArray[ctop.CV.compressPtr-1] === newByte); 127 | endproperty 128 | a_outputwhenlow: assert property (p_outputwhenlow) assertions_cnt++; 129 | else $display("a_outputwhenlow:time %t, Ptr = %d; compArray = %d; newByte = %s", $time, ctop.CV.compressPtr, compArray[ctop.CV.compressPtr], newByte ); 130 | 131 | /* 132 | property p_outputwhenhi; 133 | @(negedge clock) 134 | disable iff(reset || Done || ctop.CV.compressPtr == 0 ) 135 | (ctop.ControlBit) |=> ({compArray[ctop.CV.compressPtr],compArray[ctop.CV.compressPtr+1]} === {ctop.length,ctop.Offset}); 136 | endproperty 137 | a_outputwhenhi: assert property (p_outputwhenhi) assertions_cnt++; 138 | else $display("a_outputwhenhi: time %t, Ptr = %d; compArray-1 = %d; compArray = %d; Length =%d; Offset=%d ", $time, ctop.CV.compressPtr, compArray[ctop.CV.compressPtr], compArray[ctop.CV.compressPtr+1], ctop.length, ctop.Offset ); 139 | */ 140 | property p_ctrlbitwhenlow; 141 | @(negedge clock) 142 | disable iff(reset || Done ) 143 | (!ctop.ControlBit) |=> (controlWord[ctop.CV.controlPtr] === 0); 144 | endproperty 145 | a_ctrlbitwhenlow: assert property (p_ctrlbitwhenlow) assertions_cnt++; 146 | 147 | property p_ctrlbitwhenhi; 148 | @(negedge clock) 149 | disable iff(reset || Done) 150 | (ctop.ControlBit) |=> (controlWord[ctop.CV.controlPtr -1] === 1); 151 | endproperty 152 | a_ctrlbitwhenhi: assert property (p_ctrlbitwhenhi) assertions_cnt++; 153 | else $display("time %t, Ptr = %d;", $time, ctop.CV.controlPtr); 154 | 155 | property p_lengthwhenctrlbithi; 156 | @(negedge clock) 157 | disable iff(reset || Done) 158 | (ctop.ControlBit) |-> (ctop.length >= 3); 159 | endproperty 160 | a_lengthwhenctrlbithi: assert property (p_lengthwhenctrlbithi) assertions_cnt++; 161 | else $display("time %t, fromHash = %d;", $time, ctop.hF.fromHash); 162 | 163 | endmodule 164 | -------------------------------------------------------------------------------- /compressor/compressor_top.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the is the module that all the pin-level connections 3 | 4 | Portland State University 5 | ECE571 Final Project 6 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 7 | 8 | */ 9 | 10 | module compressor_top (clock, reset, valid, CurByte, Done, compArray, controlWord, controlPtr); 11 | parameter STRINGSIZE = 4096; 12 | parameter TABLESIZE = 4096; 13 | input clock, reset, valid; 14 | input [15:0] [7:0] CurByte; 15 | output Done; 16 | output logic [STRINGSIZE-1:0][7:0] compArray; 17 | output logic [STRINGSIZE-1:0] controlWord; 18 | output integer controlPtr; 19 | //input logic [RANDTABLE:0][11:0] uniqnums; 20 | 21 | 22 | logic [11:0] offset; 23 | logic [15:0] [7:0] toCompare; 24 | logic [15:0] [7:0] NextBytes; 25 | logic [23:0] toHash; 26 | integer bytePtr; 27 | integer compressPtr; 28 | logic ControlBit; 29 | logic [3:0] Length; 30 | logic [15:0] [7:0] CurBytes,BytesAtOffset; 31 | byte InByte; 32 | logic [11:0] fromHash; 33 | logic [11:0] OldBytePosition,Offset; 34 | integer BytePosition; 35 | byte OutByte; 36 | 37 | logic [3:0] length; 38 | byte OneByte,prevOneByte; 39 | logic [15:0] prevCV; 40 | compinput #(STRINGSIZE) comp (clock, reset, valid, CurByte, offset, Length, toCompare, NextBytes, toHash, Done, bytePtr); 41 | 42 | /* 43 | input [15:0] [7:0] CurBytes,BytesAtOffset, // from input history 44 | input ControlBit, reset, // ControlBit from table 45 | output logic [3:0] Length); */ 46 | Comparator cptr (CurBytes,BytesAtOffset,ControlBit, reset,Length); 47 | 48 | /* 49 | input clock, reset, 50 | input [7:0] InByte, 51 | input [11:0] fromHash, // address from Hash function 52 | input [11:0] BytePosition, // from comp input 53 | output logic [7:0] OutByte 54 | output logic [11:0] OldBytePosition, // to compinput(offset) 55 | output logic[11:0] Offset, // to CompressedValues 56 | output bit ControlBit); */ 57 | tableOfPtr #(TABLESIZE) tob (clock,reset,InByte,fromHash,BytePosition,length,OutByte,OldBytePosition,Offset,ControlBit); 58 | 59 | /* 60 | input clock, reset, 61 | input [3:0] length, // from comparator 62 | input [11:0] Offset, // from table 63 | input [7:0] OneByte, // from table 64 | input controlBit, // from table 65 | intf compArray, 66 | output logic [STRINGSIZE-1:0] controlWord); */ 67 | //intf #(STRINGSIZE) InterfaceArray (); 68 | 69 | CompressedValues #(STRINGSIZE) CV (clock,reset, Done,length,Offset,OneByte,ControlBit,compArray,controlWord,controlPtr,compressPtr); 70 | 71 | hashFunction hF (reset,toHash,fromHash); 72 | 73 | assign BytePosition = bytePtr; // from compinput to table 74 | assign OneByte = OutByte; // from table to CompressedValues 75 | assign offset = OldBytePosition; // from table to compinput 76 | assign BytesAtOffset = toCompare; // from compinput to comparator 77 | assign CurBytes = NextBytes; 78 | assign length = Length; // from comparator to compressedValues and table 79 | assign InByte = NextBytes[0]; 80 | 81 | endmodule 82 | -------------------------------------------------------------------------------- /compressor/emulation/Comparator.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the comparator input for the compressor portion of the design. 3 | This compares amount of bytes that are the same. 4 | 5 | input ControlBit; used for debug 6 | input BytesAtOffset; bytes at offset to compare 7 | input NextBytes; Current 16 bytes to compare 8 | output Length; amount of total chars that are the same between CurBytes and the toCompare(bytes at offset) 9 | 10 | 11 | Portland State University 12 | ECE571 Final Project 13 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 14 | 15 | */ 16 | 17 | 18 | module Comparator( 19 | input [15:0] [7:0] CurBytes,BytesAtOffset, // from input history 20 | input ControlBit, reset, // ControlBit from table 21 | output logic [3:0] Length); 22 | 23 | int count; 24 | 25 | always_comb begin 26 | 27 | if (reset) begin 28 | Length = '0; 29 | count = 0; 30 | end 31 | else //if (ControlBit) begin 32 | begin 33 | count = 0; 34 | for (int i = 0; i < 16; i++) begin 35 | if(CurBytes[i] == BytesAtOffset[i]) count++; 36 | else begin 37 | Length = count; 38 | break; 39 | end 40 | end 41 | end 42 | //else Length <= '0; 43 | end 44 | endmodule -------------------------------------------------------------------------------- /compressor/emulation/CompressedValues.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the is the module that handles adding literal (OneByte) or {length,offset} 3 | to the compArray. 4 | 5 | input OneByte; byte to add to compArray 6 | input Offset; offset from tableofPtr's 7 | input Length; amount of total chars that are the same between CurBytes and the toCompare(bytes at offset) 8 | input ControlBit; added to controlWord array 9 | output compArray; an array of compressed characters 10 | output countrolWord; an array of 0's and 1's 11 | output controlPtr; used for assertions 12 | output compressPtr; used for assertions 13 | input Done; end of string reached 14 | 15 | Portland State University 16 | ECE571 Final Project 17 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 18 | 19 | */ 20 | module CompressedValues (clock, reset, Done, length, Offset, OneByte, controlBit, compArray, controlWord); 21 | parameter STRINGSIZE = 4096; 22 | 23 | input clock, reset, Done; 24 | input [3:0] length; // from comparator 25 | input [11:0] Offset; // from table 26 | input [7:0] OneByte; // from table 27 | input controlBit; // from table 28 | /*intf compArray,*/ 29 | output logic [STRINGSIZE-1:0] [7:0] compArray; 30 | output logic [STRINGSIZE-1:0] controlWord; 31 | 32 | int controlPtr; 33 | int compressPtr; 34 | 35 | 36 | always_ff @(posedge clock) begin 37 | if (reset) begin 38 | compArray <= '0; 39 | controlWord <= '0; 40 | controlPtr = 0; 41 | compressPtr = 0; 42 | end 43 | 44 | else if (controlBit && Done == 0) begin 45 | compArray[compressPtr] <= {length,Offset[11:8]}; 46 | compArray[compressPtr+1] <= Offset[7:0]; 47 | compressPtr = compressPtr+2; 48 | controlWord[controlPtr] <= controlBit; 49 | controlPtr = controlPtr + 1; 50 | end 51 | else if (!Done && !controlBit) begin 52 | compArray[compressPtr] <= OneByte; 53 | compressPtr = compressPtr + 1; 54 | controlWord[controlPtr] <= controlBit; 55 | controlPtr = controlPtr + 1; 56 | end 57 | else begin 58 | compressPtr = compressPtr; 59 | controlPtr = controlPtr; 60 | end 61 | end 62 | 63 | 64 | endmodule -------------------------------------------------------------------------------- /compressor/emulation/MakeFile_comp: -------------------------------------------------------------------------------- 1 | #Makefile for Legacy ICE Mode (Standalone) for VeloceOS3 flow 2 | #standalone_tutorial_1 3 | #Author-Sameer Ghewari, April 2015 4 | 5 | 6 | MODE ?= veloce 7 | 8 | #make all does everything 9 | all: clean work build run 10 | 11 | #Create respective work libs and map them 12 | work: 13 | vlib work.$(MODE) 14 | vmap work work.$(MODE) 15 | 16 | #Compile/synthesize the environment 17 | build: 18 | vlog compressor_pkg.sv #Compile the package 19 | vlog top_tb.sv #Compile the testbench 20 | ifeq ($(MODE),puresim) #If mode is puresim, compile everything else 21 | vlog Comparator.sv #Compile the interface 22 | vlog comp_if.sv 23 | vlog compinput.sv #Compile the booth DUT 24 | vlog top_hdl.sv #Compule the HDL top 25 | vlog CompressedValues.sv 26 | vlog compressor_top.sv 27 | vlog hashFunction.sv 28 | vlog tableofPtr.sv 29 | velhvl -sim $(MODE) 30 | else #else, synthesize! 31 | velanalyze compressor_pkg.sv #Analyze the package for synthesis 32 | velanalyze -extract_hvl_info +define+QUESTA top_tb.sv #Analyze the HVL for external task calls in BFM 33 | velanalyze comp_if.sv 34 | velanalyze top_hdl.sv #Analyze the HDL top for synthesis 35 | velanalyze Comparator.sv #Compile the interface 36 | velanalyze compinput.sv #Compile the booth DUT 37 | velanalyze CompressedValues.sv 38 | velanalyze compressor_top.sv 39 | velanalyze hashFunction.sv 40 | velanalyze tableofPtr.sv 41 | velcomp -top top_hdl #Synthesize! 42 | velhvl -sim $(MODE) 43 | endif 44 | 45 | run: 46 | vsim -c -do "run -all" top_tb top_hdl #Run all 47 | cp transcript transcript.$(MODE) #Record transcript 48 | 49 | norun: #No run lets you control stepping etc. 50 | vsim -c +tbxrun+norun top_tb top_hdl -cpppath $(CPP_PATH) 51 | cp transcript transcript.$(MODE) 52 | 53 | clean: 54 | rm -rf tbxbindings.h modelsim.ini transcript.veloce transcript.puresim work work.puresim work.veloce transcript *~ vsim.wlf *.log dgs.dbg dmslogdir veloce.med veloce.wave veloce.map velrunopts.ini edsenv 55 | 56 | 57 | -------------------------------------------------------------------------------- /compressor/emulation/comp_if.sv: -------------------------------------------------------------------------------- 1 | //Import alu_pkg definitions for struct data type and parameters 2 | import compressor_pkg::*; 3 | interface comp_if(input bit clock); 4 | // pragma attribute comp_if partition_interface_xif 5 | parameter STRINGSIZE = 350; 6 | parameter TABLESIZE = 4096; 7 | localparam delay = 5; 8 | bit valid, reset; 9 | logic [15:0] [7:0] CurByte; 10 | bit Done; 11 | logic [STRINGSIZE-1:0][7:0] compArray; 12 | logic [STRINGSIZE-1:0] controlWord; 13 | properties vals; 14 | 15 | integer k,m; 16 | 17 | // task to input string into compinput 18 | task stringinput(input properties vals, output properties out); // pragma tbx xtf 19 | @(posedge clock); 20 | m = 0; 21 | valid = 1; 22 | for (int i = 0; m < STRINGSIZE ; i++) begin 23 | 24 | CurByte = (vals.testString[m +:16]); 25 | 26 | @(posedge clock) 27 | m = m + 16; 28 | end 29 | 30 | valid = 0; 31 | 32 | 33 | endtask 34 | // after Done signal high, save compArray and Control Word 35 | task whenDone(input properties vals, output properties out); // pragma tbx xtf 36 | @(posedge clock); 37 | while(!Done) @(posedge clock); 38 | 39 | out.cArray = compArray; 40 | out.cWord = controlWord; 41 | out.Done = Done; 42 | $display("WhenDoneAfter."); 43 | endtask 44 | // used in debug 45 | task whenReset(); // pragma tbx xtf 46 | @(negedge reset); 47 | endtask 48 | 49 | // reset the compressor to get ready for new inputs 50 | task callReset(); // pragma tbx xtf 51 | 52 | 53 | @(posedge clock) 54 | reset = 1; 55 | @(posedge clock); 56 | @(posedge clock) 57 | reset = 0; 58 | @(posedge clock); 59 | endtask 60 | 61 | endinterface: comp_if -------------------------------------------------------------------------------- /compressor/emulation/compinput.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the compressor input for the compressor portion of the design. 3 | input valid; when high save data in myHistory 4 | input CurByte; 16 bytes from uncompressed string 5 | input offset; old offset from tableofPtr's 6 | input Length; amount of total chars that are the same between CurBytes and the toCompare(bytes at offset) 7 | output toCompare; bytes at offset to compare 8 | output NextBytes; Current 16 bytes to compare 9 | output toHash; 3 bytes to send to hash function 10 | output bytePtr; current char position 11 | output Done; end of string reached 12 | 13 | Portland State University 14 | ECE571 Final Project 15 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 16 | 17 | */ 18 | 19 | module compinput( 20 | input clock, reset, valid, 21 | input [15:0] [7:0] CurByte, 22 | input [11:0] offset , 23 | input [3:0] Length, 24 | output logic [15:0] [7:0] toCompare, 25 | output logic [15:0] [7:0] NextBytes, 26 | output logic [23:0] toHash, 27 | output bit Done, 28 | output integer bytePtr); 29 | 30 | parameter HISTORY = 4096; 31 | 32 | logic [HISTORY-1:0] [7:0] myHistory = '0; 33 | logic [11:0] bytePointer = 0; 34 | integer count = 0; 35 | integer s_offset; 36 | integer j,k; 37 | 38 | byte valueHistory; 39 | 40 | assign s_offset = (!reset) ? integer' (offset) : '0 ; 41 | 42 | always_ff @(posedge clock) begin 43 | if (reset) begin 44 | bytePointer <= 0; 45 | count <= 0; 46 | myHistory <= '0; 47 | Done <= 1; 48 | end 49 | else if(!valid && 0 == myHistory[bytePointer+1])begin 50 | Done <= 1; 51 | 52 | end 53 | else begin 54 | 55 | // increment byte pointer if not at end of string 56 | // add current byte to history 57 | if(valid && (bytePointer < HISTORY)) begin 58 | Done <= 0; 59 | myHistory[count+1 +: 17] <= CurByte ; 60 | count <= count + 16; 61 | 62 | end 63 | else count <= count; 64 | // if first 3 bytes recieved, send to hash function 65 | if(Length >= 3) bytePointer <= bytePointer + Length; 66 | else bytePointer <= bytePointer + 1; 67 | 68 | end 69 | 70 | end 71 | 72 | always_comb begin 73 | if(reset) begin 74 | toHash = '0; 75 | toCompare = '0; 76 | NextBytes = '0; 77 | end 78 | else if (bytePointer >= 1) begin 79 | toHash = {myHistory[bytePointer],myHistory[bytePointer+1],myHistory[bytePointer+2]}; 80 | end 81 | else toHash = toHash; 82 | if ((myHistory[bytePointer] != 0) && (bytePointer - s_offset) > 15 && s_offset > 0 ) begin 83 | toCompare = myHistory[(s_offset) +: 16]; 84 | NextBytes = myHistory[bytePointer +: 16]; 85 | end 86 | else if ((myHistory[bytePointer] != 0) && (bytePointer - s_offset) <= 15 && s_offset > 0 ) begin 87 | j = 0; 88 | for(int i = 0; i < 16; i++) begin 89 | if(j < 16) begin 90 | toCompare[j] = myHistory[offset+j]; 91 | j++; 92 | /*toCompare[0] = myHistory[offset]; 93 | toCompare[1] = myHistory[offset+1]; 94 | toCompare[2] = myHistory[offset+2]; 95 | toCompare[3] = myHistory[offset+3]; 96 | toCompare[4] = myHistory[offset+4]; 97 | toCompare[5] = myHistory[offset+5]; 98 | toCompare[6] = myHistory[offset+6]; 99 | toCompare[7] = myHistory[offset+7]; 100 | toCompare[8] = myHistory[offset+8]; 101 | toCompare[9] = myHistory[offset+9]; 102 | toCompare[10] = myHistory[offset+10]; 103 | toCompare[11] = myHistory[offset+11]; 104 | toCompare[12] = myHistory[offset+12]; 105 | toCompare[13] = myHistory[offset+13]; 106 | toCompare[14] = myHistory[offset+14]; 107 | toCompare[15] = myHistory[offset+15];*/ 108 | end 109 | //NextBytes = myHistory[bytePointer +: 16]; 110 | end 111 | end 112 | else toCompare = '0; 113 | NextBytes = myHistory[bytePointer +: 16]; 114 | /* 115 | if (bytePointer+16 <= HISTORY) NextBytes = myHistory[bytePointer +: 16]; 116 | else if(HISTORY-bytePointer <= 0) NextBytes = '0; 117 | else begin 118 | NextBytes = '0; 119 | k = 0; 120 | if (HISTORY-bytePointer <=16) begin 121 | for(int i = 0; (i <= HISTORY -bytePointer) ; i++) begin 122 | if(k < 16) begin 123 | NextBytes[k] = myHistory[bytePointer + k]; 124 | k++; 125 | end 126 | end 127 | end 128 | end */ 129 | end 130 | assign bytePtr = bytePointer; 131 | assign valueHistory = myHistory[bytePointer]; 132 | 133 | endmodule 134 | -------------------------------------------------------------------------------- /compressor/emulation/compinput_tb.sv: -------------------------------------------------------------------------------- 1 | module compinput_tb (); 2 | parameter STRINGSIZE = 350; 3 | parameter TABLESIZE = 4096; 4 | parameter RANDTABLE = 4095; 5 | localparam delay = 5ns; 6 | bit clock, reset, valid; 7 | logic [15:0] [7:0] CurByte; 8 | bit Done; 9 | logic[RANDTABLE:0][11:0] uniqnums; 10 | logic [STRINGSIZE - 1:0] controlWord; 11 | logic [STRINGSIZE-1:0][7:0] compArray; 12 | integer nums; 13 | int newPtr; 14 | logic [7:0] newByte; 15 | // compressor_top #(STRINGSIZE,TABLESIZE,RANDTABLE) ctop (clock,reset,valid,CurByte,Done,compArray,controlWord,uniqnums); 16 | compressor_top #(STRINGSIZE,TABLESIZE) ctop (clock,reset,valid,CurByte,Done,compArray,controlWord); 17 | int assertions_cnt; 18 | 19 | string s; 20 | int k; 21 | int m; 22 | initial begin 23 | clock = 0; 24 | reset = 1; 25 | #(2*delay) reset = 0; 26 | 27 | end 28 | 29 | always begin 30 | #delay 31 | clock <= ~clock; 32 | end 33 | 34 | initial begin 35 | k = 0; 36 | m = 0; 37 | 38 | $display("...Starting input"); 39 | wait (!reset && clock); 40 | //#(2*delay); 41 | 42 | //s = "daddy finger daddy finger where are you, here I am, here I am where are you.\n new line\0"; 43 | s = "When Munch died in January 1944, it transpired that he had unconditionally bequeathed all his remaining works to the City of Oslo. Edvard Munch's art is the most significant Norwegian contribution to the history of art, and he is the only Norwegian artist who has exercised a decisive influence on European art trends, above all as a pioneer of"; 44 | valid <= 1; 45 | for (int i = 0; m < s.len() ; i++) begin 46 | k = 0; 47 | for (int j = i*16; j < i*16+16; j++) begin 48 | CurByte[k] <= (s.getc(j)); 49 | k++; 50 | 51 | m++; 52 | end 53 | 54 | #(2*delay); 55 | end 56 | valid <= 0; 57 | 58 | 59 | wait (Done) 60 | $display("Input string= %s", s); 61 | $display("Compressed string= %s",{<< byte {compArray}}); 62 | $display("amount of assertions checked = %d", assertions_cnt); 63 | 64 | end 65 | 66 | 67 | // used for assertion properties 68 | always begin 69 | 70 | @(posedge clock) newPtr = (ctop.length+ctop.bytePtr); 71 | newByte = ctop.CV.OneByte; 72 | 73 | end 74 | 75 | //////////////////////////// 76 | // assertion properties 77 | 78 | property p_bytePtr; 79 | @(negedge clock) 80 | disable iff(reset || Done) 81 | (ctop.length >= 3) |=> newPtr == ctop.bytePtr; 82 | 83 | endproperty 84 | a_bytePtr: assert property (p_bytePtr) assertions_cnt++; 85 | 86 | property p_tableEntry; 87 | @(negedge clock) 88 | disable iff(reset) 89 | (ctop.ControlBit) |-> (ctop.comp.offset > 0); 90 | 91 | endproperty 92 | a_tableEntry: assert property (p_tableEntry) assertions_cnt++; 93 | 94 | property p_offsetnotzero; 95 | @(negedge clock) 96 | disable iff(reset || Done) 97 | (ctop.ControlBit) |-> ((ctop.tob.BytePosition - ctop.comp.offset) == ctop.Offset); 98 | endproperty 99 | a_offsetnotzero: assert property (p_offsetnotzero) assertions_cnt++; 100 | 101 | property p_lengthnotzero; 102 | @(negedge clock) 103 | disable iff(reset || Done || ctop.length < 3) 104 | (ctop.ControlBit) |-> (ctop.length >= 3); 105 | endproperty 106 | a_lengthnotzero: assert property (p_lengthnotzero) assertions_cnt++; 107 | 108 | property p_outputwhenlow; 109 | @(negedge clock) 110 | disable iff(reset || Done || ctop.CV.compressPtr == 0 || newByte === 0) 111 | (!ctop.ControlBit) |-> (compArray[ctop.CV.compressPtr-1] === newByte); 112 | endproperty 113 | a_outputwhenlow: assert property (p_outputwhenlow) assertions_cnt++; 114 | else $display("a_outputwhenlow:time %t, Ptr = %d; compArray = %d; newByte = %s", $time, ctop.CV.compressPtr, compArray[ctop.CV.compressPtr], newByte ); 115 | 116 | /* 117 | property p_outputwhenhi; 118 | @(negedge clock) 119 | disable iff(reset || Done || ctop.CV.compressPtr == 0 ) 120 | (ctop.ControlBit) |=> ({compArray[ctop.CV.compressPtr],compArray[ctop.CV.compressPtr+1]} === {ctop.length,ctop.Offset}); 121 | endproperty 122 | a_outputwhenhi: assert property (p_outputwhenhi) assertions_cnt++; 123 | else $display("a_outputwhenhi: time %t, Ptr = %d; compArray-1 = %d; compArray = %d; Length =%d; Offset=%d ", $time, ctop.CV.compressPtr, compArray[ctop.CV.compressPtr], compArray[ctop.CV.compressPtr+1], ctop.length, ctop.Offset ); 124 | */ 125 | property p_ctrlbitwhenlow; 126 | @(negedge clock) 127 | disable iff(reset || Done ) 128 | (!ctop.ControlBit) |=> (controlWord[ctop.CV.controlPtr] === 0); 129 | endproperty 130 | a_ctrlbitwhenlow: assert property (p_ctrlbitwhenlow) assertions_cnt++; 131 | 132 | property p_ctrlbitwhenhi; 133 | @(negedge clock) 134 | disable iff(reset || Done) 135 | (ctop.ControlBit) |=> (controlWord[ctop.CV.controlPtr -1] === 1); 136 | endproperty 137 | a_ctrlbitwhenhi: assert property (p_ctrlbitwhenhi) assertions_cnt++; 138 | else $display("time %t, Ptr = %d;", $time, ctop.CV.controlPtr); 139 | 140 | property p_lengthwhenctrlbithi; 141 | @(negedge clock) 142 | disable iff(reset || Done) 143 | (ctop.ControlBit) |-> (ctop.length >= 3); 144 | endproperty 145 | a_lengthwhenctrlbithi: assert property (p_lengthwhenctrlbithi) assertions_cnt++; 146 | else $display("time %t, fromHash = %d;", $time, ctop.hF.fromHash); 147 | 148 | endmodule 149 | -------------------------------------------------------------------------------- /compressor/emulation/compressor_pkg.sv: -------------------------------------------------------------------------------- 1 | 2 | package compressor_pkg; 3 | 4 | localparam STRINGSIZE = 350; 5 | 6 | // Bus sequence item struct 7 | typedef struct packed { 8 | // Request fields 9 | bit Done; 10 | logic [STRINGSIZE - 1:0] cWord; 11 | logic [STRINGSIZE-1:0][7:0] cArray; 12 | logic [STRINGSIZE -1:0][7:0] testString; 13 | } properties; 14 | 15 | endpackage: compressor_pkg -------------------------------------------------------------------------------- /compressor/emulation/compressor_top.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This is the is the module that all the pin-level connections 3 | 4 | Portland State University 5 | ECE571 Final Project 6 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 7 | 8 | */ 9 | 10 | 11 | module compressor_top (comp_if comp_port); 12 | /*clock, reset, valid, CurByte, Done, compArray, controlWord); 13 | parameter STRINGSIZE = 4096; 14 | parameter TABLESIZE = 4096; 15 | input clock, reset, valid; 16 | input [15:0] [7:0] CurByte; 17 | output Done; 18 | output logic [STRINGSIZE-1:0][7:0] compArray; 19 | output logic [STRINGSIZE-1:0] controlWord; 20 | //input logic [RANDTABLE:0][11:0] uniqnums; 21 | */ 22 | parameter STRINGSIZE = 4096; 23 | parameter TABLESIZE = 4096; 24 | logic [11:0] offset; 25 | logic [15:0] [7:0] toCompare; 26 | logic [15:0] [7:0] NextBytes; 27 | logic [23:0] toHash; 28 | integer bytePtr; 29 | 30 | logic ControlBit; 31 | logic [3:0] Length; 32 | logic [15:0] [7:0] CurBytes,BytesAtOffset; 33 | byte InByte; 34 | logic [11:0] fromHash; 35 | logic [11:0] OldBytePosition,Offset; 36 | integer BytePosition; 37 | byte OutByte; 38 | 39 | logic [3:0] length; 40 | byte OneByte; 41 | 42 | compinput #(STRINGSIZE) comp (comp_port.clock, comp_port.reset, comp_port.valid, comp_port.CurByte, offset, Length, toCompare, NextBytes, toHash, comp_port.Done, bytePtr); 43 | 44 | /* 45 | input [15:0] [7:0] CurBytes,BytesAtOffset, // from input history 46 | input ControlBit, reset, // ControlBit from table 47 | output logic [3:0] Length); */ 48 | Comparator cptr (CurBytes,BytesAtOffset,ControlBit, comp_port.reset,Length); 49 | 50 | /* 51 | input clock, reset, 52 | input [7:0] InByte, 53 | input [11:0] fromHash, // address from Hash function 54 | input [11:0] BytePosition, // from comp input 55 | output logic [7:0] OutByte 56 | output logic [11:0] OldBytePosition, // to compinput(offset) 57 | output logic[11:0] Offset, // to CompressedValues 58 | output bit ControlBit); */ 59 | tableOfPtr #(TABLESIZE) tob (comp_port.clock,comp_port.reset,InByte,fromHash,BytePosition,length,OutByte,OldBytePosition,Offset,ControlBit); 60 | 61 | /* 62 | input clock, reset, 63 | input [3:0] length, // from comparator 64 | input [11:0] Offset, // from table 65 | input [7:0] OneByte, // from table 66 | input controlBit, // from table 67 | intf compArray, 68 | output logic [STRINGSIZE-1:0] controlWord); */ 69 | //intf #(STRINGSIZE) InterfaceArray (); 70 | 71 | CompressedValues #(STRINGSIZE) CV (comp_port.clock,comp_port.reset, comp_port.Done,length,Offset,OneByte,ControlBit,comp_port.compArray,comp_port.controlWord); 72 | 73 | hashFunction hF (comp_port.reset,toHash,fromHash); 74 | 75 | assign BytePosition = bytePtr; // from compinput to table 76 | assign OneByte = OutByte; // from table to CompressedValues 77 | assign offset = OldBytePosition; // from table to compinput 78 | assign BytesAtOffset = toCompare; // from compinput to comparator 79 | assign CurBytes = NextBytes; 80 | assign length = Length; // from comparator to compressedValues and table 81 | assign InByte = NextBytes[0]; 82 | 83 | endmodule 84 | -------------------------------------------------------------------------------- /compressor/emulation/tableofPtr.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This module adds a byte position entry into the table and sends old 3 | byte position back to compinput. 4 | 5 | input InByte; byte to send on to CompressedValues if controlBit high 6 | input fromHash; 12 bits to index the TableOfPointers 7 | input BytePosition; the current byte position to input into the tableOfPtr 8 | input length; amount of bits that are the same if >2 then set controlBit hi, else low 9 | output OutByte; send on to CompressedValues, 0 or literal depends on ControlBit 10 | output OldBytePosition; if table entry !null send to value to compinput 11 | output Offset; send to CompressedValues 12 | output ControlBit; send to CompressedValues 13 | 14 | Portland State University 15 | ECE571 Final Project 16 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 17 | 18 | */ 19 | 20 | module tableOfPtr( 21 | 22 | input clock, reset, 23 | input [7:0] InByte, 24 | input [11:0] fromHash, // address from Hash function 25 | input [31:0] BytePosition, // from comp input 26 | input [3:0] length, 27 | output logic [7:0] OutByte, 28 | output logic [11:0] OldBytePosition, // to compinput(offset) 29 | output logic[11:0] Offset, // to CompressedValues 30 | output bit ControlBit); // to comparator and CompressedValues 31 | 32 | parameter TABLESIZE = 4096; 33 | 34 | logic [TABLESIZE-1:0] [31:0] TableOfPointers; 35 | logic [31:0] tableValue; 36 | 37 | always_ff @(posedge clock) begin 38 | if(reset) begin 39 | TableOfPointers <= '0; 40 | //OldBytePosition <= '0; 41 | end 42 | else if (TableOfPointers[fromHash]== 0) begin 43 | TableOfPointers[fromHash] <= BytePosition; 44 | end 45 | else if(TableOfPointers[fromHash] > 0 && length > 2)begin 46 | //OldBytePosition <= TableOfPointers[fromHash]; 47 | TableOfPointers[fromHash] <= BytePosition; 48 | end 49 | else TableOfPointers[fromHash] <= TableOfPointers[fromHash]; 50 | 51 | /* 52 | if(TableOfPointers[fromHash] == 0) Offset <= BytePosition - TableOfPointers[fromHash]; 53 | else Offset <= '0; 54 | 55 | if ((TableOfPointers[fromHash] == 0) || (BytePosition - TableOfPointers[fromHash] ) >= TABLESIZE) OutByte <= InByte; 56 | else OutByte <= '0; 57 | */ 58 | end 59 | always_comb begin 60 | if(reset) ControlBit = 0; 61 | else if (TableOfPointers[fromHash]== 0) begin 62 | ControlBit = 0; 63 | end 64 | else if (TableOfPointers[fromHash] > 0 && length > 2) begin 65 | ControlBit = 1; 66 | end 67 | else if (length <= 2)begin 68 | ControlBit = 0; 69 | end 70 | else ControlBit = ControlBit; 71 | end 72 | assign Offset = TableOfPointers[fromHash] == 0 ? '0 : (BytePosition - TableOfPointers[fromHash] ); 73 | assign OutByte = !ControlBit ? InByte : '0; 74 | assign OldBytePosition = TableOfPointers[fromHash]; 75 | assign tableValue = TableOfPointers[fromHash] ; 76 | endmodule -------------------------------------------------------------------------------- /compressor/emulation/top_hdl.sv: -------------------------------------------------------------------------------- 1 | import compressor_pkg::*; 2 | module top_hdl; //pragma attribute top_hdl parition_module_xrtl 3 | parameter STRINGSIZE = 350; 4 | parameter TABLESIZE = 4096; 5 | localparam delay = 5; 6 | bit clock, reset, valid; 7 | logic [15:0] [7:0] CurByte; 8 | bit Done; 9 | logic [STRINGSIZE-1:0][7:0] compArray; 10 | logic [STRINGSIZE-1:0] controlWord; 11 | properties vals; 12 | comp_if comp_port(clock); 13 | compressor_top #(STRINGSIZE,TABLESIZE) ctop (comp_port); 14 | 15 | integer k,m; 16 | // tbx clkgen 17 | initial begin 18 | clock = 0; 19 | forever #5 clock = ~clock; 20 | 21 | end 22 | 23 | /* 24 | // tbx clkgen 25 | initial begin 26 | reset = 1; 27 | #10 reset = 0; 28 | end 29 | */ 30 | endmodule -------------------------------------------------------------------------------- /compressor/emulation/top_tb.sv: -------------------------------------------------------------------------------- 1 | import compressor_pkg::*; 2 | module top_tb; 3 | localparam STRINGSIZE = 350; 4 | properties vals, out; // needed for package variables 5 | string s; 6 | int k; 7 | 8 | initial 9 | begin 10 | top_hdl.comp_port.callReset(); // call reset 11 | 12 | s = "When Munch died in January 1944, it transpired that he had unconditionally bequeathed all his remaining works to the City of Oslo. Edvard Munch's art is the most significant Norwegian contribution to the history of art, and he is the only Norwegian artist who has exercised a decisive influence on European art trends, above all as a pioneer of"; 13 | 14 | k = 0; 15 | for(int i = 0; i < STRINGSIZE; i++) begin // convert string to a synthesizable array 16 | vals.testString[k] = s.getc(k); 17 | k++; 18 | end 19 | top_hdl.comp_port.stringinput(vals, out); // inputs the string to compinput 20 | $display("...After stringinput"); 21 | top_hdl.comp_port.whenDone(vals,out); // When Done signal high move on to show the outputs 22 | $display("Input string= %s", s); 23 | //$display("Compressed string= %s",); 24 | $display("Compressed string= %s", out.cArray); // out.cArray contains the compressed output 25 | 26 | top_hdl.comp_port.callReset(); // reset to input new string 27 | 28 | s = "daddy finger daddy finger where are you, here I am, here I am where are you.\n new line"; 29 | 30 | k = 0; 31 | for(int i = 0; i < STRINGSIZE; i++) begin // convert string to a synthesizable array 32 | vals.testString[k] = s.getc(k); 33 | k++; 34 | end 35 | top_hdl.comp_port.stringinput(vals, out); // inputs the string to compinput 36 | $display("...After stringinput"); 37 | top_hdl.comp_port.whenDone(vals,out); // When Done signal high move on to show the outputs 38 | $display("Input string= %s", s); 39 | $display("Compressed string= %s", out.cArray); // out.cArray contains the compressed output 40 | 41 | $stop; 42 | 43 | end 44 | endmodule -------------------------------------------------------------------------------- /compressor/emulation/veloce.config: -------------------------------------------------------------------------------- 1 | comp -hvl questa 2 | #rtlc -xrtl is default 3 | #Delcare all XRTL modules to RTLS. These are the modules that will run on the emulator. 4 | rtlc -partition_module_rtl comp_if 5 | rtlc -partition_module_xrtl compressor_pkg 6 | rtlc -partition_module_xrtl top_hdl 7 | comp -platform D1S 8 | comp -num_boards 1 9 | -------------------------------------------------------------------------------- /compressor/tableofPtr.sv: -------------------------------------------------------------------------------- 1 | /* 2 | This module adds a byte position entry into the table and sends old 3 | byte position back to compinput. 4 | 5 | input InByte; byte to send on to CompressedValues if controlBit high 6 | input fromHash; 12 bits to index the TableOfPointers 7 | input BytePosition; the current byte position to input into the tableOfPtr 8 | input length; amount of bits that are the same if >2 then set controlBit hi, else low 9 | output OutByte; send on to CompressedValues, 0 or literal depends on ControlBit 10 | output OldBytePosition; if table entry !null send to value to compinput 11 | output Offset; send to CompressedValues 12 | output ControlBit; send to CompressedValues 13 | 14 | Portland State University 15 | ECE571 Final Project 16 | by Mark Chernishoff, Parker Ridd, Manas Karanjekar 17 | 18 | */ 19 | 20 | module tableOfPtr( 21 | 22 | input clock, reset, 23 | input [7:0] InByte, 24 | input [11:0] fromHash, // address from Hash function 25 | input [31:0] BytePosition, // from comp input 26 | input [3:0] length, 27 | output logic [7:0] OutByte, 28 | output logic [11:0] OldBytePosition, // to compinput(offset) 29 | output logic[11:0] Offset, // to CompressedValues 30 | output bit ControlBit); // to comparator and CompressedValues 31 | 32 | parameter TABLESIZE = 4096; 33 | 34 | logic [TABLESIZE-1:0] [31:0] TableOfPointers; 35 | logic [31:0] tableValue; 36 | 37 | always_ff @(posedge clock) begin 38 | if(reset) begin 39 | TableOfPointers <= '0; 40 | //OldBytePosition <= '0; 41 | end 42 | else if (TableOfPointers[fromHash]== 0) begin 43 | TableOfPointers[fromHash] <= BytePosition; 44 | end 45 | else if(TableOfPointers[fromHash] > 0 && length > 2)begin 46 | //OldBytePosition <= TableOfPointers[fromHash]; 47 | TableOfPointers[fromHash] <= BytePosition; 48 | end 49 | else TableOfPointers[fromHash] <= TableOfPointers[fromHash]; 50 | 51 | /* 52 | if(TableOfPointers[fromHash] == 0) Offset <= BytePosition - TableOfPointers[fromHash]; 53 | else Offset <= '0; 54 | 55 | if ((TableOfPointers[fromHash] == 0) || (BytePosition - TableOfPointers[fromHash] ) >= TABLESIZE) OutByte <= InByte; 56 | else OutByte <= '0; 57 | */ 58 | end 59 | always_comb begin 60 | if(reset) ControlBit = 0; 61 | else if (TableOfPointers[fromHash]== 0) begin 62 | ControlBit = 0; 63 | end 64 | else if (TableOfPointers[fromHash] > 0 && length > 2) begin 65 | ControlBit = 1; 66 | end 67 | else if (length <= 2)begin 68 | ControlBit = 0; 69 | end 70 | else ControlBit = ControlBit; 71 | end 72 | assign Offset = TableOfPointers[fromHash] == 0 ? '0 : (BytePosition - TableOfPointers[fromHash] ); 73 | assign OutByte = !ControlBit ? InByte : '0; 74 | assign OldBytePosition = TableOfPointers[fromHash]; 75 | assign tableValue = TableOfPointers[fromHash] ; 76 | endmodule -------------------------------------------------------------------------------- /decompressor/emulation/Makefile_decomp: -------------------------------------------------------------------------------- 1 | #Makefile for Legacy ICE Mode (Standalone) for VeloceOS3 flow 2 | #standalone_tutorial_1 3 | #Author-Sameer Ghewari, April 2015 4 | 5 | all: clean lib analyze vmwclk compile run view 6 | 7 | 8 | lib: 9 | vellib work 10 | velmap work ./work 11 | 12 | 13 | analyze: 14 | -velcomp 15 | @echo -e "\nMakeInfo: You may get an error informing vmw.clk.generated file is missing if you are running this the first time. \n\tThis is normal, do not panic! You will generate this file using GUI in the next step\n" 16 | 17 | vmwclk: 18 | @echo -e "\nMakeInfo: Now Use velview to create vmw.clk clock/IO specification file. Follow steps from Standalone Flow guide. \n\t\tPress enter to continue....." 19 | @read 20 | velview 21 | 22 | compile: 23 | velcomp -start_after rtlc 24 | 25 | run: 26 | velrun -nac -c -do run.do 27 | @echo -e "\nMakeInfo: Emulation run successful!" 28 | 29 | view: 30 | @echo -e "\nMakeInfo: Will open velview GUI now and add wave/signals using do file" 31 | velview -do view.do 32 | 33 | clean: 34 | rm -rf edsenv debussy.cfg DEBUG_AllBoardsInfos_Host_0.txt veloce.log veloce.med veloce.map veloce.wave velrunopts.ini work 35 | 36 | -------------------------------------------------------------------------------- /decompressor/emulation/decomp_if.sv: -------------------------------------------------------------------------------- 1 | //Import alu_pkg definitions for struct data type and parameters 2 | import compressor_pkg::*; 3 | interface decomp_if(input bit clock); 4 | // pragma attribute comp_if partition_interface_xif 5 | parameter STRINGSIZE = 350; 6 | parameter TABLESIZE = 4096; 7 | localparam delay = 5; 8 | logic clock, reset; 9 | data_in_t data_in; 10 | logic control_word_in; 11 | logic data_in_valid; 12 | logic[7:0] decompressed_byte; 13 | logic out_valid; 14 | logic decompressor_busy; 15 | properties vals; 16 | 17 | integer k,m; 18 | 19 | // task to input string into compinput 20 | task stringinput(input properties vals, output properties out); // pragma tbx xtf 21 | @(posedge clock); 22 | m = 0; 23 | valid = 1; 24 | for (int i = 0; m < STRINGSIZE ; i++) begin 25 | 26 | CurByte = (vals.testString[m +:16]); 27 | 28 | @(posedge clock) 29 | m = m + 16; 30 | end 31 | 32 | valid = 0; 33 | 34 | 35 | endtask 36 | // after Done signal high, save compArray and Control Word 37 | task whenDone(input properties vals, output properties out); // pragma tbx xtf 38 | @(posedge clock); 39 | while(!Done) @(posedge clock); 40 | 41 | out.cArray = compArray; 42 | out.cWord = controlWord; 43 | out.Done = Done; 44 | $display("WhenDoneAfter."); 45 | endtask 46 | // used in debug 47 | task whenReset(); // pragma tbx xtf 48 | @(negedge reset); 49 | endtask 50 | 51 | // reset the compressor to get ready for new inputs 52 | task callReset(); // pragma tbx xtf 53 | 54 | 55 | @(posedge clock) 56 | reset = 1; 57 | @(posedge clock); 58 | @(posedge clock) 59 | reset = 0; 60 | @(posedge clock); 61 | endtask 62 | 63 | endinterface: comp_if -------------------------------------------------------------------------------- /decompressor/emulation/decompressor_pkg.sv: -------------------------------------------------------------------------------- 1 | 2 | package decompressor_pkg; 3 | 4 | localparam STRINGSIZE = 350; 5 | 6 | // Bus sequence item struct 7 | 8 | typedef struct packed { 9 | logic[3:0] length; 10 | logic[11:0] offset; 11 | } compressed_t; 12 | 13 | typedef union packed { 14 | logic[15:0] character; 15 | compressed_t compressed_objects; 16 | 17 | } data_in_t; 18 | 19 | 20 | typedef struct packed { 21 | // Request fields 22 | bit Done; 23 | logic [STRINGSIZE - 1:0] cWord; 24 | logic [STRINGSIZE-1:0][7:0] cArray; 25 | logic [STRINGSIZE -1:0][7:0] testString; 26 | } properties; 27 | 28 | endpackage: decompressor_pkg -------------------------------------------------------------------------------- /decompressor/emulation/fifo.sv: -------------------------------------------------------------------------------- 1 | module fifo( 2 | clk, 3 | reset, 4 | data_in, 5 | wr_en_in, 6 | rd_en_in, 7 | num_bytes_in, 8 | fifo_empty_out, 9 | fifo_full_out, 10 | data_out, 11 | occupancy 12 | ); 13 | 14 | parameter FIFO_SIZE = 128; 15 | parameter MAX_BYTES_IN = 16; 16 | localparam ADDR_WIDTH = $clog2(FIFO_SIZE); 17 | 18 | input clk, reset; 19 | input[7 : 0] data_in[MAX_BYTES_IN-1 : 0]; 20 | input wr_en_in, rd_en_in; 21 | output fifo_empty_out, fifo_full_out; 22 | output data_out; 23 | 24 | // internal signals 25 | logic[ADDR_WIDTH-1 : 0] front_ptr, back_ptr; 26 | logic[ADDR_WIDTH-1 : 0] front_ptr_next, back_ptr_next; 27 | logic[7 : 0] fifo_buffer[FIFO_SIZE-1 : 0], fifo_buffer_next[FIFO_SIZE-1 : 0]; 28 | integer occupancy, occupancy_next; 29 | 30 | assign fifo_full_out = (occupancy == FIFO_SIZE) ? 1 : 0; 31 | assign fifo_empty_out = (occupancy == 0) ? 1 : 0; 32 | assign data_out = fifo_buffer[front_ptr]; 33 | 34 | // registers 35 | always_ff @(posedge clk, posedge reset) begin 36 | if(reset) begin 37 | front_ptr <= '0; 38 | back_ptr <= '0; 39 | for(int i = 0; i < FIFO_SIZE-1; i++) 40 | fifo_buffer[i] <= '0; 41 | occupancy <= 0; 42 | end 43 | else begin 44 | front_ptr <= front_ptr_next; 45 | back_ptr <= back_ptr_next; 46 | fifo_buffer <= fifo_buffer_next; 47 | occupancy <= occupancy_next; 48 | end 49 | 50 | // check that we never underflow or overflow 51 | assert(occupancy >= 0) 52 | else $error("Underflow detected in FIFO %m"); 53 | assert(occupancy <= FIFO_SIZE) 54 | else $error("Overflow detected in FIFO %m"); 55 | end 56 | 57 | // next state logic 58 | always_comb begin 59 | //default logic 60 | front_ptr_next = front_ptr; 61 | back_ptr = back_ptr_next; 62 | fifo_buffer_next = fifo_buffer; 63 | 64 | //advance both pointers 65 | if(rd_en_in & wr_en_in) begin 66 | if(front_ptr == (FIFO_SIZE-1)) 67 | front_ptr_next = '0; 68 | else 69 | front_ptr_next = front_ptr + 1; 70 | if(back_ptr + num_bytes_in >= FIFO_SIZE) begin 71 | back_ptr_next = num_bytes_in-(FIFO_SIZE-back_ptr); 72 | fifo_buffer_next[FIFO_SIZE-1 : back_ptr] = data_in[FIFO_SIZE-back_ptr-1 : 0]; 73 | fifo_buffer_next[num_bytes_in-(FIFO_SIZE-back_ptr)-1 : 0] = data_in[num_bytes_in-1:FIFO_SIZE-back_ptr]; 74 | else begin 75 | back_ptr_next = back_ptr + num_bytes_in; 76 | fifo_buffer_next[back_ptr +: num_bytes_in] = data_in[num_bytes_in : 0]; 77 | end 78 | 79 | 80 | end 81 | 82 | end 83 | else if(rd_en_in) begin 84 | // make sure we aren't empty -- don't allow advance 85 | // if FIFO is empty 86 | if(front_ptr != back_ptr) begin 87 | if(front_ptr == (FIFO_SIZE-1)) 88 | front_ptr_next = '0; 89 | else 90 | front_ptr_next = front_ptr + 1; 91 | end 92 | end 93 | else if(wr_en_in) begin 94 | // make sure we aren't full -- don't allow advance 95 | // if FIFO is full 96 | if(back_ptr + num_bytes_in >= FIFO_SIZE) begin 97 | back_ptr_next = num_bytes_in-(FIFO_SIZE-back_ptr); 98 | fifo_buffer_next[FIFO_SIZE-1 : back_ptr] = data_in[FIFO_SIZE-back_ptr-1 : 0]; 99 | fifo_buffer_next[num_bytes_in-(FIFO_SIZE-back_ptr)-1 : 0] = data_in[num_bytes_in-1:FIFO_SIZE-back_ptr]; 100 | else begin 101 | back_ptr_next = back_ptr + num_bytes_in; 102 | fifo_buffer_next[back_ptr +: num_bytes_in] = data_in[num_bytes_in : 0]; 103 | end 104 | end 105 | 106 | end 107 | 108 | endmodule 109 | -------------------------------------------------------------------------------- /decompressor/emulation/history_buffer.sv: -------------------------------------------------------------------------------- 1 | // LZRW1 Compression Core 2 | // History Buffer 3 | // 4 | // This module stores history for the LZRW1 decompressor module. It stores one byte of data per 5 | // table entry. wr_en triggers a write, and one write can be performed per clock cycle. 6 | // 7 | // Manas Karanjekar, Mark Chernishoff, and Parker Ridd 8 | // ECEn 571 Fall 2017 9 | 10 | module history_buffer( 11 | clock, // clock in 12 | reset, // reset in 13 | data_in, // data in 14 | wr_addr, // write address in 15 | wr_en, // write enable 16 | rd_addr, // read address in 17 | data_out // data out 18 | ); 19 | 20 | parameter HISTORY_SIZE = 4096; // the number of entries in the history buffer 21 | parameter ENTRY_WIDTH = 8; // entry width for the history buffer 22 | localparam HISTORY_ADDR_WIDTH = $clog2(HISTORY_SIZE); // the address width is derived from the history size 23 | 24 | 25 | input logic clock, reset; 26 | input logic[ENTRY_WIDTH-1:0] data_in; 27 | input logic[HISTORY_ADDR_WIDTH-1:0] wr_addr, rd_addr; 28 | input logic wr_en; 29 | output logic[ENTRY_WIDTH-1:0] data_out; 30 | 31 | // history buffer array 32 | logic[ENTRY_WIDTH-1:0] history[HISTORY_SIZE-1:0], history_next[HISTORY_SIZE-1:0]; 33 | 34 | always_ff @(posedge clock, posedge reset) begin 35 | if(reset) begin 36 | for(int i = 0; i < HISTORY_SIZE; i++) 37 | history[i] <= '0; 38 | end 39 | else 40 | history <= history_next; 41 | end 42 | 43 | always_comb begin 44 | history_next = history; 45 | if(wr_en) 46 | history_next[wr_addr] = data_in; 47 | end 48 | 49 | assign data_out = history[rd_addr]; 50 | 51 | endmodule -------------------------------------------------------------------------------- /decompressor/emulation/run_decomp.do: -------------------------------------------------------------------------------- 1 | configure -emul CSDSOLO1 2 | reg setvalue testbench.reset 1 3 | run 50 4 | reg setvalue testbench.reset 0 5 | run 5000 6 | upload -tracedir ./veloce.wave/wave1 7 | memory upload -instance decompressed_byte -file result.txt 8 | exit 9 | -------------------------------------------------------------------------------- /decompressor/emulation/top_hdl.sv: -------------------------------------------------------------------------------- 1 | import deompressor_pkg::*; 2 | module top_hdl; //pragma attribute top_hdl parition_module_xrtl 3 | parameter HISTORY_SIZE = 4096; 4 | localparam HISTORY_ADDR_WIDTH = $clog2(HISTORY_SIZE); 5 | 6 | localparam delay = 5; 7 | logic clock, reset; 8 | data_in_t data_in; 9 | logic control_word_in; 10 | logic data_in_valid; 11 | logic[7:0] decompressed_byte; 12 | logic out_valid; 13 | logic decompressor_busy; 14 | properties vals; 15 | decomp_if decomp_port(clock); 16 | deompressor_top #(.HISTORY_SIZE(HISTORY_SIZE) dctop (decomp_port); 17 | 18 | integer k,m; 19 | // tbx clkgen 20 | initial begin 21 | clock = 0; 22 | forever #5 clock = ~clock; 23 | end 24 | 25 | endmodule -------------------------------------------------------------------------------- /decompressor/emulation/top_tb.sv: -------------------------------------------------------------------------------- 1 | import compressor_pkg::*; 2 | module top_tb; 3 | localparam STRINGSIZE = 256; 4 | localparam CW_SIZE = 128; 5 | localparam COMPRESSED_SIZE = 131; 6 | properties vals, out; // needed for package variables 7 | string s; 8 | logic[0:CW_SIZE-1] control_word_vector; 9 | logic[COMPRESSED_SIZE-1:0][7:0] compressed_byte_vector; 10 | string expected_output; 11 | int k; 12 | 13 | initial 14 | begin 15 | top_hdl.decomp_port.callReset(); // call reset 16 | 17 | control_word_vector = SW_SIZE'h00000011881801040C00408308040000; 18 | compresed_byte_vector =COMPRESSED_SIZE'h497420776173207468652062657374206F662074696D65732C2069A01A776F72F01B90356167654034776973646F6DD035701A666F6F6C6973686E6573E05465706F6368403B62656C696566D03B901C696E63726564756C697479D021736561736F6E403E4C69676874F01C801C4461726BF0786520737072696E67403B686F70652C; 19 | expected_output = "It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope,"; 20 | 21 | k = 0; 22 | for(int i = 0; i < STRINGSIZE; i++) begin // convert string to a synthesizable array 23 | vals.testString[k] = s.getc(k); 24 | k++; 25 | end 26 | top_hdl.decomp_port.stringinput(vals, out); // inputs the string to compinput 27 | $display("...After stringinput"); 28 | top_hdl.decomp_port.whenDone(vals,out); // When Done signal high move on to show the outputs 29 | $display("Input string= %s", s); 30 | //$display("Compressed string= %s",); 31 | $display("Compressed string= %s", out.cArray); // out.cArray contains the compressed output 32 | 33 | top_hdl.decomp_port.callReset(); // reset to input new string 34 | 35 | s = "daddy finger daddy finger where are you, here I am, here I am where are you.\n new line"; 36 | 37 | k = 0; 38 | for(int i = 0; i < STRINGSIZE; i++) begin // convert string to a synthesizable array 39 | vals.testString[k] = s.getc(k); 40 | k++; 41 | end 42 | top_hdl.decomp_port.stringinput(vals, out); // inputs the string to compinput 43 | $display("...After stringinput"); 44 | top_hdl.decomp_port.whenDone(vals,out); // When Done signal high move on to show the outputs 45 | $display("Input string= %s", s); 46 | $display("Compressed string= %s", out.cArray); // out.cArray contains the compressed output 47 | 48 | $stop; 49 | 50 | end 51 | endmodule -------------------------------------------------------------------------------- /decompressor/emulation/veloce.config: -------------------------------------------------------------------------------- 1 | comp -hvl questa 2 | #rtlc -xrtl is default 3 | #Delcare all XRTL modules to RTLS. These are the modules that will run on the emulator. 4 | rtlc -partition_module_rtl comp_if 5 | rtlc -partition_module_xrtl compressor_pkg 6 | rtlc -partition_module_xrtl top_hdl 7 | comp -platform D1S 8 | comp -num_boards 1 9 | -------------------------------------------------------------------------------- /decompressor/emulation/veloce_config_decomp.config: -------------------------------------------------------------------------------- 1 | veanalyze history_buffer.sv decompressor_top.sv decompressor_top_tb.sv 2 | 3 | #Declare top level module 4 | comp -top decompressor_top_tb 5 | 6 | #Declare single step compile/analysis flow 7 | comp -single_step 8 | 9 | #Solo is D1S 10 | comp -platform D1S 11 | 12 | comp -num_boards 1 13 | 14 | #ICE Legacy Support enabled 15 | comp -app legacy 16 | 17 | #Retain write-only memories in design 18 | velsyn -SWOM 19 | -------------------------------------------------------------------------------- /decompressor/fifo.sv: -------------------------------------------------------------------------------- 1 | module fifo( 2 | clk, 3 | reset, 4 | data_in, 5 | wr_en_in, 6 | rd_en_in, 7 | num_bytes_in, 8 | fifo_empty_out, 9 | fifo_full_out, 10 | data_out, 11 | occupancy 12 | ); 13 | 14 | parameter FIFO_SIZE = 128; 15 | parameter MAX_BYTES_IN = 16; 16 | localparam ADDR_WIDTH = $clog2(FIFO_SIZE); 17 | 18 | input clk, reset; 19 | input[7 : 0] data_in[MAX_BYTES_IN-1 : 0]; 20 | input wr_en_in, rd_en_in; 21 | output fifo_empty_out, fifo_full_out; 22 | output data_out; 23 | 24 | // internal signals 25 | logic[ADDR_WIDTH-1 : 0] front_ptr, back_ptr; 26 | logic[ADDR_WIDTH-1 : 0] front_ptr_next, back_ptr_next; 27 | logic[7 : 0] fifo_buffer[FIFO_SIZE-1 : 0], fifo_buffer_next[FIFO_SIZE-1 : 0]; 28 | integer occupancy, occupancy_next; 29 | 30 | assign fifo_full_out = (occupancy == FIFO_SIZE) ? 1 : 0; 31 | assign fifo_empty_out = (occupancy == 0) ? 1 : 0; 32 | assign data_out = fifo_buffer[front_ptr]; 33 | 34 | // registers 35 | always_ff @(posedge clk, posedge reset) begin 36 | if(reset) begin 37 | front_ptr <= '0; 38 | back_ptr <= '0; 39 | for(int i = 0; i < FIFO_SIZE-1; i++) 40 | fifo_buffer[i] <= '0; 41 | occupancy <= 0; 42 | end 43 | else begin 44 | front_ptr <= front_ptr_next; 45 | back_ptr <= back_ptr_next; 46 | fifo_buffer <= fifo_buffer_next; 47 | occupancy <= occupancy_next; 48 | end 49 | 50 | // check that we never underflow or overflow 51 | assert(occupancy >= 0) 52 | else $error("Underflow detected in FIFO %m"); 53 | assert(occupancy <= FIFO_SIZE) 54 | else $error("Overflow detected in FIFO %m"); 55 | end 56 | 57 | // next state logic 58 | always_comb begin 59 | //default logic 60 | front_ptr_next = front_ptr; 61 | back_ptr = back_ptr_next; 62 | fifo_buffer_next = fifo_buffer; 63 | 64 | //advance both pointers 65 | if(rd_en_in & wr_en_in) begin 66 | if(front_ptr == (FIFO_SIZE-1)) 67 | front_ptr_next = '0; 68 | else 69 | front_ptr_next = front_ptr + 1; 70 | if(back_ptr + num_bytes_in >= FIFO_SIZE) begin 71 | back_ptr_next = num_bytes_in-(FIFO_SIZE-back_ptr); 72 | fifo_buffer_next[FIFO_SIZE-1 : back_ptr] = data_in[FIFO_SIZE-back_ptr-1 : 0]; 73 | fifo_buffer_next[num_bytes_in-(FIFO_SIZE-back_ptr)-1 : 0] = data_in[num_bytes_in-1:FIFO_SIZE-back_ptr]; 74 | else begin 75 | back_ptr_next = back_ptr + num_bytes_in; 76 | fifo_buffer_next[back_ptr +: num_bytes_in] = data_in[num_bytes_in : 0]; 77 | end 78 | 79 | 80 | end 81 | 82 | end 83 | else if(rd_en_in) begin 84 | // make sure we aren't empty -- don't allow advance 85 | // if FIFO is empty 86 | if(front_ptr != back_ptr) begin 87 | if(front_ptr == (FIFO_SIZE-1)) 88 | front_ptr_next = '0; 89 | else 90 | front_ptr_next = front_ptr + 1; 91 | end 92 | end 93 | else if(wr_en_in) begin 94 | // make sure we aren't full -- don't allow advance 95 | // if FIFO is full 96 | if(back_ptr + num_bytes_in >= FIFO_SIZE) begin 97 | back_ptr_next = num_bytes_in-(FIFO_SIZE-back_ptr); 98 | fifo_buffer_next[FIFO_SIZE-1 : back_ptr] = data_in[FIFO_SIZE-back_ptr-1 : 0]; 99 | fifo_buffer_next[num_bytes_in-(FIFO_SIZE-back_ptr)-1 : 0] = data_in[num_bytes_in-1:FIFO_SIZE-back_ptr]; 100 | else begin 101 | back_ptr_next = back_ptr + num_bytes_in; 102 | fifo_buffer_next[back_ptr +: num_bytes_in] = data_in[num_bytes_in : 0]; 103 | end 104 | end 105 | 106 | end 107 | 108 | endmodule 109 | -------------------------------------------------------------------------------- /decompressor/history_buffer.sv: -------------------------------------------------------------------------------- 1 | // LZRW1 Compression Core 2 | // History Buffer 3 | // 4 | // This module stores history for the LZRW1 decompressor module. It stores one byte of data per 5 | // table entry. wr_en triggers a write, and one write can be performed per clock cycle. 6 | // 7 | // Manas Karanjekar, Mark Chernishoff, and Parker Ridd 8 | // ECEn 571 Fall 2017 9 | 10 | module history_buffer( 11 | clock, // clock in 12 | reset, // reset in 13 | data_in, // data in 14 | wr_addr, // write address in 15 | wr_en, // write enable 16 | rd_addr, // read address in 17 | data_out // data out 18 | ); 19 | 20 | parameter HISTORY_SIZE = 4096; // the number of entries in the history buffer 21 | parameter ENTRY_WIDTH = 8; // entry width for the history buffer 22 | localparam HISTORY_ADDR_WIDTH = $clog2(HISTORY_SIZE); // the address width is derived from the history size 23 | 24 | 25 | input logic clock, reset; 26 | input logic[ENTRY_WIDTH-1:0] data_in; 27 | input logic[HISTORY_ADDR_WIDTH-1:0] wr_addr, rd_addr; 28 | input logic wr_en; 29 | output logic[ENTRY_WIDTH-1:0] data_out; 30 | 31 | // history buffer array 32 | logic[ENTRY_WIDTH-1:0] history[HISTORY_SIZE-1:0], history_next[HISTORY_SIZE-1:0]; 33 | 34 | always_ff @(posedge clock, posedge reset) begin 35 | if(reset) begin 36 | for(int i = 0; i < HISTORY_SIZE; i++) 37 | history[i] <= '0; 38 | end 39 | else 40 | history <= history_next; 41 | end 42 | 43 | always_comb begin 44 | history_next = history; 45 | if(wr_en) 46 | history_next[wr_addr] = data_in; 47 | end 48 | 49 | assign data_out = history[rd_addr]; 50 | 51 | endmodule -------------------------------------------------------------------------------- /final_presentation.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/final_presentation.pptx -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | Copyright 2017 Manas Karanjekar, Parker Ridd, and Mark Chernishoff 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | TESTVECTORSFLAGS = --num_chars 256 --num_vectors 100 --manual_tv manual_tvs.txt --io_path test_vectors/ 2 | 3 | run_top_testbench: compile_testbench_sv 4 | vsim -c top 5 | 6 | run_decompressor_testbench: compile_decompressor_sv 7 | # put info here 8 | vsim -c -GNUM_AUTO_TESTS=100 decompressor_top_tb 9 | 10 | run_compressor_testbench: compile_compressor_sv 11 | vsim -c compinput_tb 12 | 13 | compile_testbench_sv: compile_compressor_sv compile_decompressor_sv 14 | vlog -sv TBandDesign/top.sv 15 | 16 | compile_compressor_sv: make_vlib 17 | vlog -sv compressor/Comparator.sv compressor/compinput.sv compressor/hashFunction.sv compressor/tableofPtr.sv compressor/CompressedValues.sv compressor/compressor_top.sv compressor/compinput_tb.sv 18 | 19 | compile_decompressor_sv: make_vlib 20 | vlog -sv decompressor/history_buffer.sv decompressor/decompressor_top.sv decompressor/decompressor_top_tb.sv 21 | 22 | create_test_vectors: 23 | python3 test_vectors/GenerateVectors.py $(TESTVECTORSFLAGS) 24 | 25 | make_vlib: 26 | vlib work 27 | 28 | clean_test_vectors: 29 | rm test_vectors/*bin 30 | 31 | 32 | clean: 33 | rm -rf work 34 | 35 | -------------------------------------------------------------------------------- /test_vectors/GenerateVectors.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import VectorGenerator 3 | import os 4 | 5 | def main(): 6 | parser = argparse.ArgumentParser(description = "process arguments") 7 | parser.add_argument("--num_chars", "-nc", default=256, help="defines the number of " 8 | "characters to use for this run of the" 9 | " vector generator") 10 | parser.add_argument("--num_vectors", "-nv", default=100, help="defines the number of vectors to generate") 11 | parser.add_argument("--manual_tv", "-mtv", default="manual_tvs.txt", 12 | help= "defines where to find manual test decompressed testbench strings, 1 line per tv") 13 | 14 | parser.add_argument("--io_path", "-io", default = "", help="Defines where this program will search for and output test vectors") 15 | 16 | args = parser.parse_args() 17 | 18 | num_chars = int(args.num_chars) 19 | num_vectors = int(args.num_vectors) 20 | manual_vector_filename = args.manual_tv 21 | io_path = args.io_path 22 | 23 | i = 0 24 | while i < num_vectors: 25 | gen = VectorGenerator.VectorGenerator() 26 | print("Current testvector: " + str(i)) 27 | gen.generatevectors(num_chars, os.path.join(io_path, "generated_tv_" + str(i)), 15) 28 | i += 1 29 | 30 | # generate manual tvs 31 | curr_file = 0 32 | with open(os.path.join(io_path,manual_vector_filename), 'r') as manual_vector_file: 33 | for line in manual_vector_file: 34 | generate_manual_testvector(line.replace('\n', '').replace('\r', ''), os.path.join(io_path,"manual_tv_" + str(curr_file)), 15) 35 | curr_file += 1 36 | 37 | 38 | 39 | 40 | def generate_manual_testvector(in_string, out_file_prefix, max_length): 41 | gen = VectorGenerator.VectorGenerator() 42 | compressed_string = gen.compress_string(in_string, max_length) 43 | gen.write_out_binary_data(compressed_string, in_string, out_file_prefix) 44 | 45 | if __name__ == "__main__": 46 | main() -------------------------------------------------------------------------------- /test_vectors/VectorGenerator.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import random 3 | import string 4 | import sys 5 | 6 | 7 | 8 | class VectorGenerator: 9 | 10 | def generatevectors(self, num_chars, vector_name, max_match_length): 11 | 12 | random_string = self.generate_string(num_chars) 13 | compressed_string = self.compress_string(random_string, max_match_length) 14 | self.write_out_binary_data(compressed_string, random_string, vector_name) 15 | 16 | 17 | def write_out_binary_data(self, compressed_data, decompressed_data, vector_name): 18 | """ 19 | This writes the data passed in out into a file 20 | :param compressed_data: a list of CompressedData objects 21 | :param decompressed_data: a string 22 | :param vector_name: What to name this test vector 23 | :return: 0 if successful, nonzero if not 24 | """ 25 | with open (vector_name + "_d.bin", 'wb') as decompressed_file: 26 | decompressed_file.write(bytearray(decompressed_data, 'ascii')) 27 | 28 | # process the binary data 29 | with open (vector_name + "_c.bin", 'wb') as compressed_file: 30 | for cdata in compressed_data: 31 | if cdata.get_binary_control_word() == 1: 32 | c_bytes = cdata.get_binary_compressed_data().to_bytes(2, byteorder='big', signed=False) 33 | else: 34 | c_bytes = cdata.get_binary_compressed_data().to_bytes(1, byteorder='big', signed=False) 35 | compressed_file.write(c_bytes) 36 | 37 | with open (vector_name + "_cw.bin", 'wb') as control_word_file: 38 | temp_count = 0 39 | temp_data = 0 40 | for cdata in compressed_data: 41 | temp_data = (temp_data << 1) | cdata.get_binary_control_word() 42 | if temp_count == 31: 43 | control_word_file.write(temp_data.to_bytes(4, 'big')) 44 | temp_count = 0 45 | temp_data = 0 46 | else: 47 | temp_count += 1 48 | # perform final write-out 49 | if temp_count > 0: 50 | temp_data = temp_data << 31 - (temp_count-1) 51 | control_word_file.write(temp_data.to_bytes(4, 'big')) 52 | 53 | 54 | 55 | def compress_string(self, string_to_compress, max_match_length): 56 | """ 57 | compresses the string that has been passed in using an adaptation of the LZRW1 algorithm 58 | :param string_to_compress: The string we want to compress 59 | :return: a list of CompressedData objects 60 | """ 61 | 62 | history_array = [] 63 | full_char_array = [] 64 | hash_table = dict() 65 | 66 | current_array_index = 0 67 | 68 | #populate full char array 69 | for char in string_to_compress: 70 | full_char_array.append(char) 71 | i = 0 72 | # iterate through all three char pairs and compress them 73 | while i < len(string_to_compress): 74 | key = string_to_compress[i:i+3] 75 | curr_control_word = 0 76 | temp_index = -1 77 | offset = -1 78 | length = -1 79 | literal = -1 80 | 81 | # look up key and update if necessary 82 | if key in hash_table and i < len(string_to_compress) - 2: 83 | temp_raw_index = hash_table[key][0] 84 | temp_array_index = hash_table[key][1] 85 | hash_table[key] = (i, current_array_index) 86 | curr_control_word = 1 87 | offset = i - temp_raw_index 88 | 89 | last_match_idx = min(len(string_to_compress), i + max_match_length) 90 | length = self.get_length_of_match(string_to_compress[i:last_match_idx], temp_raw_index, max_match_length, full_char_array) 91 | print("compressed string " + string_to_compress[i:i+length]) 92 | # re-assign i to match `the new length 93 | i = i + length 94 | current_array_index += 1 95 | 96 | else: 97 | literal = string_to_compress[i] 98 | hash_table[key] = (i, current_array_index) 99 | current_array_index += 1 100 | i = i + 1 101 | 102 | # construct compressed data entry 103 | temp_compr = CompressedData(curr_control_word, length, offset, literal) 104 | history_array.append(temp_compr) 105 | 106 | return history_array 107 | 108 | def get_length_of_match(self, string_to_match, initial_raw_index, max_match_length, full_char_array): 109 | """ 110 | Get the length of the match 111 | :param string_to_match: the string to match 112 | :return: the length of the match 113 | """ 114 | current_index = initial_raw_index 115 | 116 | match_length = 0 117 | for char in string_to_match: 118 | array_char = full_char_array[current_index] 119 | if char == array_char: 120 | match_length += 1 121 | current_index += 1 122 | else: 123 | assert(match_length >= 3) 124 | return match_length 125 | 126 | assert(match_length >= 3) 127 | return match_length 128 | 129 | 130 | 131 | 132 | def generate_string(self, num_chars): 133 | """ 134 | Generates a test vector string with the specified number of chars 135 | :param num_chars: the number of chars to make the string 136 | :return: a string with random characters 137 | """ 138 | 139 | # only one method of random string generation has been implemented 140 | return self.generate_alphanumeric_random_string(num_chars) 141 | 142 | 143 | def generate_alphanumeric_random_string(self, num_chars): 144 | """ 145 | Generates a pure random string only using alphanumeric characters. Is not good 146 | for simulating natural language text (compression will not be as good) 147 | :param num_chars: the number of characters to return 148 | :return: a randomly generated alphanumeric string 149 | """ 150 | 151 | ret_string = ''.join(random.choice(string.ascii_lowercase) for _ in range(num_chars)) 152 | return ret_string 153 | 154 | 155 | class CompressedData: 156 | LENGTH_MASK = 0b00000000000000001111000000000000 157 | OFFSET_MASK = 0b00000000000000000000111111111111 158 | def __init__(self, control_word, length, offset, literal): 159 | self.control_word = control_word 160 | self.length = length 161 | self.offset = offset 162 | self.literal = literal 163 | 164 | def get_bit_tuple(self): 165 | return tuple(bin(self.control_word), bin(self.length).join(bin(self.offset))) 166 | 167 | def get_binary_compressed_data(self): 168 | if self.control_word == 1: 169 | #todo process the compressed data 170 | binary_data = ((self.length << 12) & self.LENGTH_MASK) | (self.offset & self.OFFSET_MASK) 171 | return binary_data 172 | else: 173 | return bytearray(self.literal, 'ascii')[0] 174 | 175 | def get_binary_control_word(self): 176 | if self.control_word == 0 : 177 | return 0b0 178 | else: 179 | return 0b1 -------------------------------------------------------------------------------- /test_vectors/basic_compression_c.bin: -------------------------------------------------------------------------------- 1 | abcdefg@pnkl2dfjn0 ln -------------------------------------------------------------------------------- /test_vectors/basic_compression_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/basic_compression_d.bin: -------------------------------------------------------------------------------- 1 | abcdefgabcdpnkl2dfjnbcdln -------------------------------------------------------------------------------- /test_vectors/generated_tv_0_c.bin: -------------------------------------------------------------------------------- 1 | jjttywsycxhimansikvyiwfvxttueolmfxwmxiowobocmbuomwcwyoxyluwzsueeovjx0>gurslzyvqgqulmnzlqcphddhqiajgfrdwtgjpvatxcdjjodbamfpmwkqmeriynrnwpaviibioupkrnmwskxdmhzlgmgjnedethzykkvnqfegqyyydyoppkbqkczhcttxhkzxcknewpvwleplnwgtqnpilgzfeaxnlchkqzjimsxwgbfarcptlhsrg -------------------------------------------------------------------------------- /test_vectors/generated_tv_0_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_0_d.bin: -------------------------------------------------------------------------------- 1 | jjttywsycxhimansikvyiwfvxttueolmfxwmxiowobocmbuomwcwyoxyluwzsueeovjxsycgurslzyvqgqulmnzlqcphddhqiajgfrdwtgjpvatxcdjjodbamfpmwkqmeriynrnwpaviibioupkrnmwskxdmhzlgmgjnedethzykkvnqfegqyyydyoppkbqkczhcttxhkzxcknewpvwleplnwgtqnpilgzfeaxnlchkqzjimsxwgbfarcptlhsrg -------------------------------------------------------------------------------- /test_vectors/generated_tv_10_c.bin: -------------------------------------------------------------------------------- 1 | ucwjzpehvrpbppodacxboismfqdljvweozcycnueokvrdfoqcoqq0kcyfvbfpnwiqnpwntsrfjcxqxddeoqulvrzalfqjawirmwacz0Yjphkprmcjezrenxwebpcuvzxgxemoibrrypbqlmvuthcaymmhlqyomzozhljjjbmsdhqjznczojcumqrgotknirxooakdrngrbjqeksofcbilavravmjgygosszlzpgnllxjmoqixhelzspcojnbq -------------------------------------------------------------------------------- /test_vectors/generated_tv_10_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_10_d.bin: -------------------------------------------------------------------------------- 1 | ucwjzpehvrpbppodacxboismfqdljvweozcycnueokvrdfoqcoqqozckcyfvbfpnwiqnpwntsrfjcxqxddeoqulvrzalfqjawirmwaczdacjphkprmcjezrenxwebpcuvzxgxemoibrrypbqlmvuthcaymmhlqyomzozhljjjbmsdhqjznczojcumqrgotknirxooakdrngrbjqeksofcbilavravmjgygosszlzpgnllxjmoqixhelzspcojnbq -------------------------------------------------------------------------------- /test_vectors/generated_tv_11_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_11_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_11_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_11_d.bin: -------------------------------------------------------------------------------- 1 | qoprymkgnabfrdjrbohmotcnfsoonrteexbqtsctnutmauyytxvgydflxjjhjxzunzswsjqlbrnzpwaussxbbqpouilagtlwfqsvxlgquyqbwussnhbkabitdxsxrjowhsstqpqtpcqolkhkcmelvnfjvqxtpcihyopbrmjesllbzoktxgrbtwktoteekmkibjuyvswjsgbormjscsgrabvosjfynbpiaickakcqobdfclrapwgzeargzpvthgmw -------------------------------------------------------------------------------- /test_vectors/generated_tv_12_c.bin: -------------------------------------------------------------------------------- 1 | uvlnpekdocyytfieilesdgtzielsqjqfyokxobglamezqswlycwqkpeozhuguyevtazwctmkpwzabquxybjsatqhuezxrnplqcjkpaokhyqinfdwdcofjzxpcwezpnr0{jcmibacqduxjpbzoqbmuaaexrmxyjhnbgsxwyvderzvfovkcawnnosskninhehczhgndootbdnqdrpsrslboulfsimhowkwqvteycyngmojfthmsahrwazgvfqwiib -------------------------------------------------------------------------------- /test_vectors/generated_tv_12_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_12_d.bin: -------------------------------------------------------------------------------- 1 | uvlnpekdocyytfieilesdgtzielsqjqfyokxobglamezqswlycwqkpeozhuguyevtazwctmkpwzabquxybjsatqhuezxrnplqcjkpaokhyqinfdwdcofjzxpcwezpnrpekjcmibacqduxjpbzoqbmuaaexrmxyjhnbgsxwyvderzvfovkcawnnosskninhehczhgndootbdnqdrpsrslboulfsimhowkwqvteycyngmojfthmsahrwazgvfqwiib -------------------------------------------------------------------------------- /test_vectors/generated_tv_13_c.bin: -------------------------------------------------------------------------------- 1 | iwdhosnvdlcfwvvpltzwdkzkqvwrygqerbadpbppvpoewfbjeveweelfdustxbxikvwabgzrvmkmnundcrpuguzrkcrofplnwtulvbkbrszozmxiwocfgezbdnrqcfscgdvaqfayuxhjbnzsedegtqydlzyqyeolz0fqmfgixojltxouoszivpaptqlmcteguijgmaboeuckroggwideitqsniodmqnzdrzrwzmhudmmonpoyilroyrndrqkygu -------------------------------------------------------------------------------- /test_vectors/generated_tv_13_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_13_d.bin: -------------------------------------------------------------------------------- 1 | iwdhosnvdlcfwvvpltzwdkzkqvwrygqerbadpbppvpoewfbjeveweelfdustxbxikvwabgzrvmkmnundcrpuguzrkcrofplnwtulvbkbrszozmxiwocfgezbdnrqcfscgdvaqfayuxhjbnzsedegtqydlzyqyeolztxbqmfgixojltxouoszivpaptqlmcteguijgmaboeuckroggwideitqsniodmqnzdrzrwzmhudmmonpoyilroyrndrqkygu -------------------------------------------------------------------------------- /test_vectors/generated_tv_14_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_14_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_14_cw.bin: -------------------------------------------------------------------------------- 1 | ` -------------------------------------------------------------------------------- /test_vectors/generated_tv_14_d.bin: -------------------------------------------------------------------------------- 1 | shvlcvgkcvcyrczqrsenklmymbmvtfzejkpxodklygwuhaojmkfnmpdxzdyywejdfidyajazvdyftwpxxkjoicalcwndtznebtuxrcvyqvyrfpmvbcjxpmhdutwuthpssaewpnsgiwtsymcxppzlmaiarvcyrqvyxzkispesjsoqrwlfhytfqllnzklnemvxfutbsnrdqloltnbknjfoqlubulxybctelhuneotepepgfqvmjagjyzjcbcqyqtxu -------------------------------------------------------------------------------- /test_vectors/generated_tv_15_c.bin: -------------------------------------------------------------------------------- 1 | zbcgrnzwlabdtzriohfvpjxxwzetijtkxoedrckvtjlshwwhqhmvatmgtumnplyyonrtalwtfxjhtozdvcctvpfikhxrddhbscrfrbbsijpixsnbbptghmpfjzcxusolpwmlpvbuxdcfqjocuhbeemigemwyrixqvyrornyvthixhzlsuhhjrcazzwdyfomrxzoyuotojknnjcpftoyjwdxuqlvhtwkcbvjljvq0Hjttocvzocbpdesqjkohvjh -------------------------------------------------------------------------------- /test_vectors/generated_tv_15_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_15_d.bin: -------------------------------------------------------------------------------- 1 | zbcgrnzwlabdtzriohfvpjxxwzetijtkxoedrckvtjlshwwhqhmvatmgtumnplyyonrtalwtfxjhtozdvcctvpfikhxrddhbscrfrbbsijpixsnbbptghmpfjzcxusolpwmlpvbuxdcfqjocuhbeemigemwyrixqvyrornyvthixhzlsuhhjrcazzwdyfomrxzoyuotojknnjcpftoyjwdxuqlvhtwkcbvjljvqqvyjttocvzocbpdesqjkohvjh -------------------------------------------------------------------------------- /test_vectors/generated_tv_16_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_16_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_16_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_16_d.bin: -------------------------------------------------------------------------------- 1 | gstivgrhrtczfeqxobxisiuybckqjvzrqnadhymickblwgwtbdyselvfckaywdruchiatdsajgimjohchiwxmpfrucwurymrfsbpjrgubhubuklnwbxztjesjyjdmedadtgnpestzpbxvcugskseikmesojaitcmeabreeiaxwboorxeeihkwijfddpgypcqjdsqczslxkyfwcuxmejmcavmjhuwjriequqyiizkstbxsiobgtmhtzbkzuwedmei -------------------------------------------------------------------------------- /test_vectors/generated_tv_17_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_17_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_17_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_17_d.bin: -------------------------------------------------------------------------------- 1 | gwevnkmeppdtohbprtsjcqxtzopadypwbipgfibsdjkqnwyqqetnicykbsfjdtcodpxkfvdvoygdgmpxgexkehxolaovinkbxatrwxxpnkpyyrkoetbtdjzmibqvgcqwenhfaaimyphlcmzfqerzuvsyndztlavylzmplvltcwkrwxxirgentnkmynqbgmycwuyeapgxogopxmxxhqtdbqlumhcjzddbbhfsyskxfmlqtuhocuxlmcsnrafmdsgv -------------------------------------------------------------------------------- /test_vectors/generated_tv_18_c.bin: -------------------------------------------------------------------------------- 1 | kqplufyundwecwprkrlfjiaqkpwzqfexllybmmtvmnkcbjadgwfqbqcatafxxrznnethmldixhtlfctjavdxbtimirdofwmekvwseozmkifefqqifphgpvsriplbkfjddxothbaacwxsdlvjwuyplqsghiwivgxdyjuterkvnygsgwllrjtpgtjkwnopwoyoqqkznjmmvzgykemnssgndswwblmushbclapmzhwazqeecmotydhwvsbgbishzevw -------------------------------------------------------------------------------- /test_vectors/generated_tv_18_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_18_d.bin: -------------------------------------------------------------------------------- 1 | kqplufyundwecwprkrlfjiaqkpwzqfexllybmmtvmnkcbjadgwfqbqcatafxxrznnethmldixhtlfctjavdxbtimirdofwmekvwseozmkifefqqifphgpvsriplbkfjddxothbaacwxsdlvjwuyplqsghiwivgxdyjuterkvnygsgwllrjtpgtjkwnopwoyoqqkznjmmvzgykemnssgndswwblmushbclapmzhwazqeecmotydhwvsbgbishzevw -------------------------------------------------------------------------------- /test_vectors/generated_tv_19_c.bin: -------------------------------------------------------------------------------- 1 | qftcohxghvwwebmphuxxphtlnqsekbryimvjkzekrzexcftzwicwqtxiswdexr03pirzsamxutfgjbsmwklpiwjszxofgiwcpjoajqzktocethwxzhpqynzegcpdhjpnhcjhdtbpuadesmsltrynclszipnresrchckxnucstwympragvuswvivkpbozkvnzultnfswinwaqkxlcifeczfoslhoqveqeulnkswwdhzciofabtmeuencdpapciry -------------------------------------------------------------------------------- /test_vectors/generated_tv_19_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_19_d.bin: -------------------------------------------------------------------------------- 1 | qftcohxghvwwebmphuxxphtlnqsekbryimvjkzekrzexcftzwicwqtxiswdexrwebpirzsamxutfgjbsmwklpiwjszxofgiwcpjoajqzktocethwxzhpqynzegcpdhjpnhcjhdtbpuadesmsltrynclszipnresrchckxnucstwympragvuswvivkpbozkvnzultnfswinwaqkxlcifeczfoslhoqveqeulnkswwdhzciofabtmeuencdpapciry -------------------------------------------------------------------------------- /test_vectors/generated_tv_1_c.bin: -------------------------------------------------------------------------------- 1 | cexubjmvhylrgtwhgxtlqzmkwdpxveqgdrozbniqnhswrbqryycrzaviumpghvmisidteqxjovdocnwtmqtepezowqrsoflivuapqcjhfpbkjiwszdupefrhrqocvyoxqnultazrjrtegudaaehzyylxnewxnoxskxynohuxmnlrkaopeboqjunhywpgcipqlvtllayqovgthocbgjyiwllqrwefawhyxafzpyentatrtwvocqxuoomhnmeecbnd -------------------------------------------------------------------------------- /test_vectors/generated_tv_1_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_1_d.bin: -------------------------------------------------------------------------------- 1 | cexubjmvhylrgtwhgxtlqzmkwdpxveqgdrozbniqnhswrbqryycrzaviumpghvmisidteqxjovdocnwtmqtepezowqrsoflivuapqcjhfpbkjiwszdupefrhrqocvyoxqnultazrjrtegudaaehzyylxnewxnoxskxynohuxmnlrkaopeboqjunhywpgcipqlvtllayqovgthocbgjyiwllqrwefawhyxafzpyentatrtwvocqxuoomhnmeecbnd -------------------------------------------------------------------------------- /test_vectors/generated_tv_20_c.bin: -------------------------------------------------------------------------------- 1 | vnixvosxobwcawsdxvkhzbornthgfhcmmqvklesuiioeraljodkmboyddpgmpzcdkibrspcwtekmfoluzmjmibqgqjddxchlbxxbamsrxtcwxxlgpuhovdombkcugggbbyqbgfrjcrsyiqztjzmyzxmbeqtjtsumupdftdxrhyayhnfctvlszsnzryugheuxbzfynsjxxivoeolwbkqjvyttcbxmrwqg0Ptfirvptmdqmroasnbthtvckjndanr -------------------------------------------------------------------------------- /test_vectors/generated_tv_20_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_20_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_20_d.bin: -------------------------------------------------------------------------------- 1 | vnixvosxobwcawsdxvkhzbornthgfhcmmqvklesuiioeraljodkmboyddpgmpzcdkibrspcwtekmfoluzmjmibqgqjddxchlbxxbamsrxtcwxxlgpuhovdombkcugggbbyqbgfrjcrsyiqztjzmyzxmbeqtjtsumupdftdxrhyayhnfctvlszsnzryugheuxbzfynsjxxivoeolwbkqjvyttcbxmrwqgjzmtfirvptmdqmroasnbthtvckjndanr -------------------------------------------------------------------------------- /test_vectors/generated_tv_21_c.bin: -------------------------------------------------------------------------------- 1 | azmpqldfamqwzrfsesvupntciaebpkpazthstxcbbyvetwyubqpknvkdtfodeopokxfjthahinavnxryrihrophwjqrqazldjfsxatatjgotdtwhuiwveyumxa0spbhndtdfvc0@eeidesjmpschlicpvamupqgjzunh07q0iflsujabweemcdxojfxsntdxanqliouswnskbgfuqrlqmaboocajijmyjhphdkofoadwpkrljtstihntjkj -------------------------------------------------------------------------------- /test_vectors/generated_tv_21_cw.bin: -------------------------------------------------------------------------------- 1 | ( -------------------------------------------------------------------------------- /test_vectors/generated_tv_21_d.bin: -------------------------------------------------------------------------------- 1 | azmpqldfamqwzrfsesvupntciaebpkpazthstxcbbyvetwyubqpknvkdtfodeopokxfjthahinavnxryrihrophwjqrqazldjfsxatatjgotdtwhuiwveyumxafampbhndtdfvchineeidesjmpschlicpvamupqgjzunhhuiqhliiflsujabweemcdxojfxsntdxanqliouswnskbgfuqrlqmaboocajijmyjhphdkofoadwpkrljtstihntjkj -------------------------------------------------------------------------------- /test_vectors/generated_tv_22_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_22_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_22_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_22_d.bin: -------------------------------------------------------------------------------- 1 | ogztvnawghbyuujkqwaofbjkcmszqgbcizuiywcymktiscaxheuarcxoipsddfoebcywtzkvvwlfmeedsvtqqusfgfbthttcitqousmilujasaagqzlhbanwsongoachpgpwsdwaznkdyjixwpemltuueqhlmbahhenptlfptvvcjlhkmoniffixsnaffigbfwxtmxnaiuojudszbgyuppsdkupvcummbtwvqgeclddkrwigelzcmshmjeszndtv -------------------------------------------------------------------------------- /test_vectors/generated_tv_23_c.bin: -------------------------------------------------------------------------------- 1 | wgzuzbkzhausooweecbzfpoieprmadvotsqbubkdbzufaqnalsfnwogvwqsqommscygjjecshnbihsabdwigpgikwrtrjnnseumlzbxylrldlkkxgwezkxnaooytpfeqdwspwmrlgiyuyhdknjansmpivdytdwmjnihrqcwfdtnnaukronrnzpaxsezskonyqiinddkluooncingmwqonshikkdapvpvjvldutdouycvgyirzjczkhixgcyepdaq -------------------------------------------------------------------------------- /test_vectors/generated_tv_23_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_23_d.bin: -------------------------------------------------------------------------------- 1 | wgzuzbkzhausooweecbzfpoieprmadvotsqbubkdbzufaqnalsfnwogvwqsqommscygjjecshnbihsabdwigpgikwrtrjnnseumlzbxylrldlkkxgwezkxnaooytpfeqdwspwmrlgiyuyhdknjansmpivdytdwmjnihrqcwfdtnnaukronrnzpaxsezskonyqiinddkluooncingmwqonshikkdapvpvjvldutdouycvgyirzjczkhixgcyepdaq -------------------------------------------------------------------------------- /test_vectors/generated_tv_24_c.bin: -------------------------------------------------------------------------------- 1 | thfbwtntwktwpunpvaowwvxbzyquktlxfvsvfeshrciosxvlykjontclgsovvkyzcoqcoutpteddexfwegucnbrlunhwgnpjlpjttgjfutunlmegzjpkudqeohevaedqmzppldctmzws0"lzpebxyehkeglexwrrdrdnblcxycjsyqhxjgizjcsccyjsczmxvpzdgouibiulmjjzrvjaezmuuqsivzvfrxffzucftsftuegebyxzzajjmxzlusl -------------------------------------------------------------------------------- /test_vectors/generated_tv_24_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_24_d.bin: -------------------------------------------------------------------------------- 1 | thfbwtntwktwpunpvaowwvxbzyquktlxfvsvfeshrciosxvlykjontclgsovvkyzcoqcoutpteddexfwegucnbrlunhwgnpjlpjttgjfutunlmegzjpkudqeohevaedqmzppldctmzwsunllzpebxyehkeglexwrrdrdnblcxycjsyqhxjgizjcsccyjsczmxvpzdgouibiulmjjzrvjaezmuuqsivzvfrxffzucftsftuegebyxzzajjmxzlusl -------------------------------------------------------------------------------- /test_vectors/generated_tv_25_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_25_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_25_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_25_d.bin: -------------------------------------------------------------------------------- 1 | onzplsukmgtrdioujdxbutsspmohbtnmdhmvlpyludcjbeuwffqkigijytuydbkdpzshovrvylitpkkujfyflavbvjfipdquezeccrqvcjcytloabikdqdwzqrevakluvgirnewnndzllxzkjsqmmrtglntpyphnaeaiqkjxxhwqhfxwnfyvqevwibsqpexwfxxoqjeihqrqzhkefrrzmdfgscmqvdktssvlmzzlytdhscnnltlylcwxyiqwvafx -------------------------------------------------------------------------------- /test_vectors/generated_tv_26_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_26_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_26_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_26_d.bin: -------------------------------------------------------------------------------- 1 | kqikwfgtgipqhgblsjvkschlzclqzmctdazznjmewdiwedcxyupghuoakfxduifjdqxbthkyysoyqamqrpwuspbowdqrlxyglpxlqnmyalpdszfxbpqwzpnzzcwycsrpcwaafsjqeyutcunqdwwnzchljygrsurfwymxmkomosmrtxkpxpnkqgxvfqgcceaxxylzroiprrryycvyfnkpnweipihkqlsquyadfofrhdigrxvimqvfexczxtdzlxlw -------------------------------------------------------------------------------- /test_vectors/generated_tv_27_c.bin: -------------------------------------------------------------------------------- 1 | cxcfnsnbcifrdjooxtvetgmilduhaimjmzqcciioakhveyvjwwlaolkdiqojvontzspfrouenanvdrgkkraugcjsxgmdwbuirmsvjsdvsxctgyfahwloyjkfncqrcnkawojpjhttfmwqbzxjrika0ceqgieehmzplxgufxdmknapocdsehkwhjimomyxmveeljwzceihmtnbszfchdxfdjzuqpsvizxybkqcjbelvuobxgapwnozkhywbgxgjx -------------------------------------------------------------------------------- /test_vectors/generated_tv_27_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_27_d.bin: -------------------------------------------------------------------------------- 1 | cxcfnsnbcifrdjooxtvetgmilduhaimjmzqcciioakhveyvjwwlaolkdiqojvontzspfrouenanvdrgkkraugcjsxgmdwbuirmsvjsdvsxctgyfahwloyjkfncqrcnkawojpjhttfmwqbzxjrikarcnceqgieehmzplxgufxdmknapocdsehkwhjimomyxmveeljwzceihmtnbszfchdxfdjzuqpsvizxybkqcjbelvuobxgapwnozkhywbgxgjx -------------------------------------------------------------------------------- /test_vectors/generated_tv_28_c.bin: -------------------------------------------------------------------------------- 1 | oujoenssvzotgbthixqwqwnrieelupnsduaveukzvmwpipqhsdkowpezlhxwuabkwbrsnjbhcdxyhejzxzrzuqmmpeemvufhpysyemiznpuhtlcysdgxwetfmppmqnlcwnlectxxjptfqeajqslwgqdwtqyoezennwy0Zazrreoqitzysklfizsthqqavmaibtgjsliwwkssorqlqvoilvayksfrnkfhbkqreyoswhhfxqsjgcpolomnulzroue -------------------------------------------------------------------------------- /test_vectors/generated_tv_28_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_28_d.bin: -------------------------------------------------------------------------------- 1 | oujoenssvzotgbthixqwqwnrieelupnsduaveukzvmwpipqhsdkowpezlhxwuabkwbrsnjbhcdxyhejzxzrzuqmmpeemvufhpysyemiznpuhtlcysdgxwetfmppmqnlcwnlectxxjptfqeajqslwgqdwtqyoezennwydxyazrreoqitzysklfizsthqqavmaibtgjsliwwkssorqlqvoilvayksfrnkfhbkqreyoswhhfxqsjgcpolomnulzroue -------------------------------------------------------------------------------- /test_vectors/generated_tv_29_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_29_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_29_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_29_d.bin: -------------------------------------------------------------------------------- 1 | uiwaxqnptoyoebwjnustmunteveqqhrcrqqmezcevhzscdwpcxrlcsizdwveodilmqutqwxmjmjbgtqlrynrgjtqyltxpvifvcvaumpdveihbwiuutvtlyfsvdgkwvgqsimehfrncwxrlzobyifxkryrsbvrpqeypdovnaimvahzwnmrcwvqqoynhpahucwtvlqluaztuyluwtlwckvhhrufdhydxhedilzdwrfrzdipjtjqrfunjqoobrfztbhi -------------------------------------------------------------------------------- /test_vectors/generated_tv_2_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_2_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_2_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_2_d.bin: -------------------------------------------------------------------------------- 1 | fqnacxczwgtdcsllhqqewuawwteupgkteambwchliexydbfinhfongllhtzjrdtgglzfxbezruvftyxpfgmdnnldmhvvpstxpdizcluamifpclekylwtdpdbogfjejqfgkkdthttocklamzpzskbidyagdzmbpwwaoayicctpuqwioohnfuddjuftofxlrfavlcqytqhltkblyltgwkpeuezvuecxgpxmbkckpmwdizdqgsvwnwzqtfmsmwgxgax -------------------------------------------------------------------------------- /test_vectors/generated_tv_30_c.bin: -------------------------------------------------------------------------------- 1 | qqlypvqevufnsfirbxtzuwvzphkzzyqyghwbslenuhwgygvhjnnkewtyjjyxmgfalmxnrswjftnxpgpfwnjhamhldygixnsovhngiznnuzgnjxzjwtzlmmbjzrkgdbunuvndrhvfbrvzgzkjnlkrmjzwvsuwpnnhpfopfkxyexjqdmcrympctheojhrfgeclyzhxflqlijglfndwweoyytcsyanybcjdeznvtlvqipluljlzxicuupwjynffhoyz -------------------------------------------------------------------------------- /test_vectors/generated_tv_30_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_30_d.bin: -------------------------------------------------------------------------------- 1 | qqlypvqevufnsfirbxtzuwvzphkzzyqyghwbslenuhwgygvhjnnkewtyjjyxmgfalmxnrswjftnxpgpfwnjhamhldygixnsovhngiznnuzgnjxzjwtzlmmbjzrkgdbunuvndrhvfbrvzgzkjnlkrmjzwvsuwpnnhpfopfkxyexjqdmcrympctheojhrfgeclyzhxflqlijglfndwweoyytcsyanybcjdeznvtlvqipluljlzxicuupwjynffhoyz -------------------------------------------------------------------------------- /test_vectors/generated_tv_31_c.bin: -------------------------------------------------------------------------------- 1 | qxcwsxwvpzjzptfkdedxnrnqzkbqbuuhekqymqnentzzfbsokzkprzbjqisxccdzsjonzflddrihbtdfplabewqhkpbfbubqncdktnqltivzoik0zgvrrvxrp0Mtvixzmqdvgxboqudvmwhhhzelhjhwnxadxxtzrtuumbtzebrxwrhsvqvtkioucfwzyhrdmxmwgwlciuukbghfxgdinoqknpbiwlrqdgoxnzhoarpdbdxgzntvxndmjnybo -------------------------------------------------------------------------------- /test_vectors/generated_tv_31_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_31_d.bin: -------------------------------------------------------------------------------- 1 | qxcwsxwvpzjzptfkdedxnrnqzkbqbuuhekqymqnentzzfbsokzkprzbjqisxccdzsjonzflddrihbtdfplabewqhkpbfbubqncdktnqltivzoikqhkzgvrrvxrpsoktvixzmqdvgxboqudvmwhhhzelhjhwnxadxxtzrtuumbtzebrxwrhsvqvtkioucfwzyhrdmxmwgwlciuukbghfxgdinoqknpbiwlrqdgoxnzhoarpdbdxgzntvxndmjnybo -------------------------------------------------------------------------------- /test_vectors/generated_tv_32_c.bin: -------------------------------------------------------------------------------- 1 | atvwxaffburwqosczknrzeozxbcdxyzbqxalrmkwckdftzcilijqbrhtuwulduwdygqmjxudhcwlryivspbxnrdbdbjxvylvzmpvueuhnjflholivrslpmsnslqoqxsiumfpasiwakeyso0 tdsrguozvfhjmlaqcrtqgcprauuxhavcowjfxpnaaqprtdutsdnpqjufdepzdfjnolgijjoygbexifeotlgumaxfklzjovfapicthnphnxhoger -------------------------------------------------------------------------------- /test_vectors/generated_tv_32_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_32_d.bin: -------------------------------------------------------------------------------- 1 | atvwxaffburwqosczknrzeozxbcdxyzbqxalrmkwckdftzcilijqbrhtuwulduwdygqmjxudhcwlryivspbxnrdbdbjxvylvzmpvueuhnjflholivrslpmsnslqoqxsiumfpasiwakeysofpatdsrguozvfhjmlaqcrtqgcprauuxhavcowjfxpnaaqprtdutsdnpqjufdepzdfjnolgijjoygbexifeotlgumaxfklzjovfapicthnphnxhoger -------------------------------------------------------------------------------- /test_vectors/generated_tv_33_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_33_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_33_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_33_d.bin: -------------------------------------------------------------------------------- 1 | ykbrklnlidxixxmpxkjfwjdisdxygtvhjlqybrktoaakctoncdnhlmwqwftwbeennkjzvlzadggzaukpvyyezpmevrwbbbohrrocngmgzawhvxkgvbdotezyiltmqvusjzpozvrvhngwgsrddgmzdewscwgdcxjbkctrcbupnrlntvcsulaaxnycndfitycdlqdqrocpclbidqqptleezvzigwesnwsaciacvwbajlnlvybsqzunkdsqtaraxxlg -------------------------------------------------------------------------------- /test_vectors/generated_tv_34_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_34_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_34_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_34_d.bin: -------------------------------------------------------------------------------- 1 | wkoseoljaaeifkhkwcblkzwvfutdnsgjjdgaodesfpodpdqwmpnfvdfnwfbajluablyrnybpvyoscnjoznlptfapsrkfjnonabsygaveyvoztdkebyiuyqnvdpphkluregbzrufffheqmroctgwmctysbxolwporqolmltmtddpeljaowwdiquoxdexdtakopwxhcvpgtquueedaepapnwnrwxpylzhedkrplqvgxlanfmwhfzhrxhocmnivilav -------------------------------------------------------------------------------- /test_vectors/generated_tv_35_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_35_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_35_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_35_d.bin: -------------------------------------------------------------------------------- 1 | dvqyssowwefkiydtcssuwvetztjmeeinvzzyqcztvyfaautivkkqsvimalogjmqlmcyuvwtbzzotmdtuqgjsfrkbxgjverqyuakjznusrfoygfoinxfzdomuqomiqwvhgiyxymgwyanopdhcennttrllbjmzoaiulxbyyiecgdsrddehcdvmfglebctmgjoigeqpsfnryspndesdmiipizizvhezofgwtybsgctiunrqyuhgqhzcyqachcojoaos -------------------------------------------------------------------------------- /test_vectors/generated_tv_36_c.bin: -------------------------------------------------------------------------------- 1 | cwqocbfmcablyqiwzskeblzwmvsziijs0 umkjtzpirqw0(dvheproysgohpligkcyzvtckclhrjvuokqztdyiguewfiahochgqtvinzxxmpgxrukqrdfdfhgyuuixpizzhxnskuclnbubdunfnupqjpwgkjwreeumnrawjeimljxyhrmkuoengtkgjzfihoxlnxxdmqsalvuumouelvoqfjctvgiscnndeqgqjrxhebtbjodrlalu0-inlpl -------------------------------------------------------------------------------- /test_vectors/generated_tv_36_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_36_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_36_d.bin: -------------------------------------------------------------------------------- 1 | cwqocbfmcablyqiwzskeblzwmvsziijswmvumkjtzpirqwfmcdvheproysgohpligkcyzvtckclhrjvuokqztdyiguewfiahochgqtvinzxxmpgxrukqrdfdfhgyuuixpizzhxnskuclnbubdunfnupqjpwgkjwreeumnrawjeimljxyhrmkuoengtkgjzfihoxlnxxdmqsalvuumouelvoqfjctvgiscnndeqgqjrxhebtbjodrlalualvinlpl -------------------------------------------------------------------------------- /test_vectors/generated_tv_37_c.bin: -------------------------------------------------------------------------------- 1 | vvnujkvszooduykvmeusairefcrxscvgkbptbdjw0fudygvzyysiwdbvbozwhn0dfnwfaccmhxizbikwecaonqvwnnv0 rnwjsnqnyadvppddmvggpueapeesuhmsgcclslqhtefxhuziyuabrllgukucxwsfmuhgyimzhsmdvcfejzainyjpmbbmtchkyojslvfpepevokebaqloendmpxdarcckowxbfxfdxkomhfjpynllzwbursitht -------------------------------------------------------------------------------- /test_vectors/generated_tv_37_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_37_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_37_d.bin: -------------------------------------------------------------------------------- 1 | vvnujkvszooduykvmeusairefcrxscvgkbptbdjwduyfudygvzyysiwdbvbozwhnbdjdfnwfaccmhxizbikwecaonqvwnnvkwernwjsnqnyadvppddmvggpueapeesuhmsgcclslqhtefxhuziyuabrllgukucxwsfmuhgyimzhsmdvcfejzainyjpmbbmtchkyojslvfpepevokebaqloendmpxdarcckowxbfxfdxkomhfjpynllzwbursitht -------------------------------------------------------------------------------- /test_vectors/generated_tv_38_c.bin: -------------------------------------------------------------------------------- 1 | dlesgfcuxdkyewtrwetpwgmzagotpyfgnbhcwnugghhwyhdgjejdnawrpfxvroqiksxykluefeivcsetnvyrgwoqhlzgfhoikopcqecdmvdrpkyyazrzgldsjibvpggkqjnwxzefgermkaqkzlrtkdcykfhifpmyhodzdneeulwzgzodpatobxthkjehvkziabvudaaxkrhnodeqoxzyjutsqsdxprvmburfvtrifbqxytnaumbamnagexsreigx -------------------------------------------------------------------------------- /test_vectors/generated_tv_38_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_38_d.bin: -------------------------------------------------------------------------------- 1 | dlesgfcuxdkyewtrwetpwgmzagotpyfgnbhcwnugghhwyhdgjejdnawrpfxvroqiksxykluefeivcsetnvyrgwoqhlzgfhoikopcqecdmvdrpkyyazrzgldsjibvpggkqjnwxzefgermkaqkzlrtkdcykfhifpmyhodzdneeulwzgzodpatobxthkjehvkziabvudaaxkrhnodeqoxzyjutsqsdxprvmburfvtrifbqxytnaumbamnagexsreigx -------------------------------------------------------------------------------- /test_vectors/generated_tv_39_c.bin: -------------------------------------------------------------------------------- 1 | yblywochouvhaktdovmlwdlfcvweozlddglszouemnhibckwhezpaifdjthpdlaqdfzpivlvqvivibodwwmpqulqqaaygsqbxcfutrgh0'zcyqfcwezuifasnqghxmwztznstmwwqduhwlnsnrekompssrzlnutmncyxeoeqtwngvalykarxricqgdixixjajgvzvwuehdjy0eljlmtcuvmnesoygczesssfdrutvbpfvetdnzoyxxlevybuf -------------------------------------------------------------------------------- /test_vectors/generated_tv_39_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_39_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_39_d.bin: -------------------------------------------------------------------------------- 1 | yblywochouvhaktdovmlwdlfcvweozlddglszouemnhibckwhezpaifdjthpdlaqdfzpivlvqvivibodwwmpqulqqaaygsqbxcfutrghfzpzcyqfcwezuifasnqghxmwztznstmwwqduhwlnsnrekompssrzlnutmncyxeoeqtwngvalykarxricqgdixixjajgvzvwuehdjyjajeljlmtcuvmnesoygczesssfdrutvbpfvetdnzoyxxlevybuf -------------------------------------------------------------------------------- /test_vectors/generated_tv_3_c.bin: -------------------------------------------------------------------------------- 1 | yeyhukhlptbxqxcfplyyrqwepajatmqmcxvkbwkkyidgncmcsotvctmxppdorwtxpaonllairhefhojgyumsihzpuqltjkuvchfqaljjfkxutkwfkvarmnhscierjvpiqlcwecqtsljynawfcwcyejlxuqgljzpcw0 rnljwbovdnnhahawaksiqimrzifefekzmhkbuhlgkdcqlvrriptgkvggfkmcwthrpuwmygznormcvcvoxiramtxosflj -------------------------------------------------------------------------------- /test_vectors/generated_tv_3_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_3_d.bin: -------------------------------------------------------------------------------- 1 | yeyhukhlptbxqxcfplyyrqwepajatmqmcxvkbwkkyidgncmcsotvctmxppdorwtxpaonllairhefhojgyumsihzpuqltjkuvchfqaljjfkxutkwfkvarmnhscierjvpiqlcwecqtsljynawfcwcyejlxuqgljzpcwjlxrnljwbovdnnhahawaksiqimrzifefekzmhkbuhlgkdcqlvrriptgkvggfkmcwthrpuwmygznormcvcvoxiramtxosflj -------------------------------------------------------------------------------- /test_vectors/generated_tv_40_c.bin: -------------------------------------------------------------------------------- 1 | wxutmxwzpyrrbpzbdkjrcrztzvqsikfjhyywvnfpshrujppmaymfnpdefrkbhtnykyuvkwttraypcdeqgtuxzyzdgadrsxqopwbialatzshzughmotl09qsoiflmdjkdtjrku0Veklarlvisiclpdfxamdltlqwiqhsaa0Hsfmvijngkkrsqcsgsamrpqyugbyseznjlwjkegdctshhnopfgqntodfgxbycvlxbkabxzddiejhmycwoodvwlp -------------------------------------------------------------------------------- /test_vectors/generated_tv_40_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_40_d.bin: -------------------------------------------------------------------------------- 1 | wxutmxwzpyrrbpzbdkjrcrztzvqsikfjhyywvnfpshrujppmaymfnpdefrkbhtnykyuvkwttraypcdeqgtuxzyzdgadrsxqopwbialatzshzughmotlkbhqsoiflmdjkdtjrkuaymeklarlvisiclpdfxamdltlqwiqhsaaopwsfmvijngkkrsqcsgsamrpqyugbyseznjlwjkegdctshhnopfgqntodfgxbycvlxbkabxzddiejhmycwoodvwlp -------------------------------------------------------------------------------- /test_vectors/generated_tv_41_c.bin: -------------------------------------------------------------------------------- 1 | tbncstqsubjdanqjlddtowfgwoerhhjcuxmdyyvtceynooqpjzlnhnwyovwlvuofymzhziuhpchdxsuynlqxobhrnkhczgsxqrfuncvvsbkamlavkhbnrjjkxcjtdiznhymkhuciczhhgaeettsfvqwzpsjgomrjctfknsudwtzuboftrxstmoddalyfvjmscubvxaexfcrmnujnaonyfrmhluruufewwamucelrisxdbcaabhjkynjulrqmyxak -------------------------------------------------------------------------------- /test_vectors/generated_tv_41_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_41_d.bin: -------------------------------------------------------------------------------- 1 | tbncstqsubjdanqjlddtowfgwoerhhjcuxmdyyvtceynooqpjzlnhnwyovwlvuofymzhziuhpchdxsuynlqxobhrnkhczgsxqrfuncvvsbkamlavkhbnrjjkxcjtdiznhymkhuciczhhgaeettsfvqwzpsjgomrjctfknsudwtzuboftrxstmoddalyfvjmscubvxaexfcrmnujnaonyfrmhluruufewwamucelrisxdbcaabhjkynjulrqmyxak -------------------------------------------------------------------------------- /test_vectors/generated_tv_42_c.bin: -------------------------------------------------------------------------------- 1 | wtzifsbuepmpcmcwpewkqrhprwmkrffxbjtdgfjbekgneeunhdpiemxkocdxqjjvfzcmzbdzjknkvnonpttlfdkuhqcageumzeqblzo0&cxqtwckwwsmbjbssmpthrphobqzmlewhlyqhieceddwnwtfdoghmhhmbesoczmgjeiqpqfihdvujpmmsewpkzhpgaptcqpjvjdhafymitezexmtdfamifbkoggzlgmnb0yx0&rujjhvvalcksjza -------------------------------------------------------------------------------- /test_vectors/generated_tv_42_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_42_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_42_d.bin: -------------------------------------------------------------------------------- 1 | wtzifsbuepmpcmcwpewkqrhprwmkrffxbjtdgfjbekgneeunhdpiemxkocdxqjjvfzcmzbdzjknkvnonpttlfdkuhqcageumzeqblzozcmcxqtwckwwsmbjbssmpthrphobqzmlewhlyqhieceddwnwtfdoghmhhmbesoczmgjeiqpqfihdvujpmmsewpkzhpgaptcqpjvjdhafymitezexmtdfamifbkoggzlgmnbwwsxjvjrujjhvvalcksjza -------------------------------------------------------------------------------- /test_vectors/generated_tv_43_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_43_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_43_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_43_d.bin: -------------------------------------------------------------------------------- 1 | bltypiyofidonmzqztekcdytkqzshknjzqejjyfcnntpbfokagnxadvswzadrybfnfkhbmtrzxtddpovvawjxqrlobcujuucywllxfgaxgmgftjeqbpefgzsiesnadfbyskpqmkccbxpbphbzztyhjtezewjsrcigkftqbpsdmyhhbwtcizawbioudveeltsefvehweioixnpxvfbeiwpgbnhwkplzsbzwszybtltefwdvsllvnopszasnjkqqpc -------------------------------------------------------------------------------- /test_vectors/generated_tv_44_c.bin: -------------------------------------------------------------------------------- 1 | ocylgukvvccivjsvwfzivoifdbszkyyvtpslksyjwvsaudrhcsnpoehxrluozzxndzttpalqaxtdfvunhwtlabyqvkzewhbnhmdhizlzinyiuifyozcztwgpixdgrbhzkjvwctujkbqmloizbwdwfgczcox0Hfrmqwdufwotbqzvdhatcabtxgsoipdqkptltajqriediwgbnfsfrfummqynmazjxzmzkfisykzlblgasrptskzicihtgzegewo -------------------------------------------------------------------------------- /test_vectors/generated_tv_44_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_44_d.bin: -------------------------------------------------------------------------------- 1 | ocylgukvvccivjsvwfzivoifdbszkyyvtpslksyjwvsaudrhcsnpoehxrluozzxndzttpalqaxtdfvunhwtlabyqvkzewhbnhmdhizlzinyiuifyozcztwgpixdgrbhzkjvwctujkbqmloizbwdwfgczcoxlabfrmqwdufwotbqzvdhatcabtxgsoipdqkptltajqriediwgbnfsfrfummqynmazjxzmzkfisykzlblgasrptskzicihtgzegewo -------------------------------------------------------------------------------- /test_vectors/generated_tv_45_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_45_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_45_cw.bin: -------------------------------------------------------------------------------- 1 | ` -------------------------------------------------------------------------------- /test_vectors/generated_tv_45_d.bin: -------------------------------------------------------------------------------- 1 | lufmfoxfxszxvhxuzhlrrtwnbaobidfxttybghnuuydyefehqkybrhzvilomxdwowrofsltnteugxwuexqdevmtdmmgitgdffguuvpanscjkaktuxbpcigjskvoouzqmkzptgshvfnjzcokxemkkbgrbwfhauprksyyntggrjdxllfpkjgobifgptpawirlrgzrhqmkqugzosyraaayzrzdiyzcasldygozpnhcpcqhrdhlrbidvyzmyobbiqdsl -------------------------------------------------------------------------------- /test_vectors/generated_tv_46_c.bin: -------------------------------------------------------------------------------- 1 | ymzhxwisflfaezhtqnlthhinxmyawdreycksykikselvrgfbqqegvizrsrcddblbswgefdkdfyynzckxhn0kydghmvjeeseydumnnfuhihdospdzxpkqoiiyxjimpormwrgaiaiyhnnemsbetfrkzmkwl0Elwkadfueneruhqyefitmbthilmtwfhutyullumujgitkbmwvkxlkkgoqxynloafawniiuvuvxzlbihvhjtecimqhtbzxltaaos -------------------------------------------------------------------------------- /test_vectors/generated_tv_46_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_46_d.bin: -------------------------------------------------------------------------------- 1 | ymzhxwisflfaezhtqnlthhinxmyawdreycksykikselvrgfbqqegvizrsrcddblbswgefdkdfyynzckxhndblkydghmvjeeseydumnnfuhihdospdzxpkqoiiyxjimpormwrgaiaiyhnnemsbetfrkzmkwlydglwkadfueneruhqyefitmbthilmtwfhutyullumujgitkbmwvkxlkkgoqxynloafawniiuvuvxzlbihvhjtecimqhtbzxltaaos -------------------------------------------------------------------------------- /test_vectors/generated_tv_47_c.bin: -------------------------------------------------------------------------------- 1 | abhhvwaxwiiydntezndpideggiqxcydzflcspfrkuwzcqgoozmvpwzkdivmdsehgjxviadlabufsqxsqsawddzqhtklwoyomrcegagkinotzziyahfyncqbwdyabwcoeltqyrvuicvejnsvaifadsoyrxexyyjkbzyotbugarxyzhxldsyealyvzdshrmquubxcnqoujwwjwmmtwtyrowpgtlmdpumcqwtvyggejmozjwesivpxeuymhxmcjvixj -------------------------------------------------------------------------------- /test_vectors/generated_tv_47_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_47_d.bin: -------------------------------------------------------------------------------- 1 | abhhvwaxwiiydntezndpideggiqxcydzflcspfrkuwzcqgoozmvpwzkdivmdsehgjxviadlabufsqxsqsawddzqhtklwoyomrcegagkinotzziyahfyncqbwdyabwcoeltqyrvuicvejnsvaifadsoyrxexyyjkbzyotbugarxyzhxldsyealyvzdshrmquubxcnqoujwwjwmmtwtyrowpgtlmdpumcqwtvyggejmozjwesivpxeuymhxmcjvixj -------------------------------------------------------------------------------- /test_vectors/generated_tv_48_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_48_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_48_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_48_d.bin: -------------------------------------------------------------------------------- 1 | akiijbhnilmokuedkjzizlwukuyxemgecwlnurxghngobhibzcioazvgsdkmebpbpkrfwpeocahedcwktulvyvhybmrsjlpfdwahuirfcyncjhkebroakygahwiqxfilylitkrnypeckhbfjqxoczmlfcsthktmzrbxcyxdtzpygdnpgxczbyhrfznkvqltvjbsdknmblactqccjanljqajmbbokergzkpvuncuohifipxtlswgebsxrzuysykfy -------------------------------------------------------------------------------- /test_vectors/generated_tv_49_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_49_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_49_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_49_d.bin: -------------------------------------------------------------------------------- 1 | lnfdyjkhqlaqxqifzwhgnxidmsrxboommvjsddjxlhddlgvrwuavewyvfiurgrcxptqslqdcndqmycalflxeoexhvaxxdfdclbfnyairpbkfzvvboapzqsptfxmukukriygvmynedwdholejcnrqujmkjyvtjanxblkmhamoskxciiedyeivrdzthanzeavcgwbctbwzexzzoztvdbxjlwsgknkzwftizalamipxiychrmkpchddauztlbepjoub -------------------------------------------------------------------------------- /test_vectors/generated_tv_4_c.bin: -------------------------------------------------------------------------------- 1 | efykgqvprwwlgkngyjdbxhjwdxykarsblvpxxdnujswsawitrpylxgompztrrwgcfyvcufqtqfwfxrapysuchoztbakzdmyzinrbtbcwpsxp@Gbywdlgttrnhmuvbhwohkrylqnsaalvhycnpichzpwottg0 ehaadjpfjusxrvyqcqitpkharecydhfaqenfbosicrguacdceszrlfusszilrccmysbgpqsospgzzjotpxbkkjsrdhjafylj -------------------------------------------------------------------------------- /test_vectors/generated_tv_4_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_4_d.bin: -------------------------------------------------------------------------------- 1 | efykgqvprwwlgkngyjdbxhjwdxykarsblvpxxdnujswsawitrpylxgompztrrwgcfyvcufqtqfwfxrapysuchoztbakzdmyzinrbtbcwpsxpdnujbywdlgttrnhmuvbhwohkrylqnsaalvhycnpichzpwottgcnpehaadjpfjusxrvyqcqitpkharecydhfaqenfbosicrguacdceszrlfusszilrccmysbgpqsospgzzjotpxbkkjsrdhjafylj -------------------------------------------------------------------------------- /test_vectors/generated_tv_50_c.bin: -------------------------------------------------------------------------------- 1 | loxjmihjicangjaxycwgzivwoxnrgmklddrtwejjqnnnftvneynyq0 hxmymfzokohmkqcjirqgtbcrzsfwhyjjlbxizzychiyodammxqtdqhrmlzdiddwcgqmldzdvqripvhotpvrunbfxuidy0Ukhziuesdgfpsaflzeedmhljfvteqowtrxbjkxkjesgbftztsxcayoluyahglerklpamaxtxxggbvpbfibuodhevmfrjwyhswqybzunmxf -------------------------------------------------------------------------------- /test_vectors/generated_tv_50_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_50_d.bin: -------------------------------------------------------------------------------- 1 | loxjmihjicangjaxycwgzivwoxnrgmklddrtwejjqnnnftvneynyqqnnhxmymfzokohmkqcjirqgtbcrzsfwhyjjlbxizzychiyodammxqtdqhrmlzdiddwcgqmldzdvqripvhotpvrunbfxuidyokokhziuesdgfpsaflzeedmhljfvteqowtrxbjkxkjesgbftztsxcayoluyahglerklpamaxtxxggbvpbfibuodhevmfrjwyhswqybzunmxf -------------------------------------------------------------------------------- /test_vectors/generated_tv_51_c.bin: -------------------------------------------------------------------------------- 1 | aewbdfnarsrdifaxifnfmxjgcwvefxuonxhdjokizlcjdqwbelfrgwbkabobvohojrcvwolfolxla0Blrlgrimebwrgsigkmgapiboagmlgqurewwucnvgozmfvahjlfqbxeccdzzgmossgqphbfmpcjmcndbyskjiiuorglvhnaeqllywhfyhihgocsmjvtfbtzebccvqzqiihpmqnozlyjxledzpfaosgnfecicjrvddxsefhikodisxbrzlf -------------------------------------------------------------------------------- /test_vectors/generated_tv_51_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_51_d.bin: -------------------------------------------------------------------------------- 1 | aewbdfnarsrdifaxifnfmxjgcwvefxuonxhdjokizlcjdqwbelfrgwbkabobvohojrcvwolfolxladiflrlgrimebwrgsigkmgapiboagmlgqurewwucnvgozmfvahjlfqbxeccdzzgmossgqphbfmpcjmcndbyskjiiuorglvhnaeqllywhfyhihgocsmjvtfbtzebccvqzqiihpmqnozlyjxledzpfaosgnfecicjrvddxsefhikodisxbrzlf -------------------------------------------------------------------------------- /test_vectors/generated_tv_52_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_52_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_52_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_52_d.bin: -------------------------------------------------------------------------------- 1 | ckljsbghrirvewabsnuxxmjwqehaojcintzmxkzwptscoqfpchpmxrfbalfgafgmvbjdftfehwtwwgetrhjsfnbaaqsuycytcmykcdutblgztdndxsapcdrziqajhkqhwoovhexnjbdowrdaomtkldxjpjznjxlrllkbmynyqnhphejxzcyqxrkwqeenmktvrkseedigphcxhosdsmnylppfafutraicrwvpmqbvbufnngirqiqpdurldlpxlsph -------------------------------------------------------------------------------- /test_vectors/generated_tv_53_c.bin: -------------------------------------------------------------------------------- 1 | brdmwgqkpimomdvohmswrcsmqxrnecrirkthurhfzqifnjfyrkcdcvwokjvgshugyvvstmpysdfdijxlqilbvndzlhefvsabitvqnymrwggalvhlghdjcuhomryvimsydoffrjnbocbnzzwlwfiurlnpduwglo0^xycfnqmsljzemjsvxmvtmzeoptiezstngkyhnngvexmhxbqsvgvvhyzbyojnyljpknutddusxqbkskhk@Esuauclrfkdo -------------------------------------------------------------------------------- /test_vectors/generated_tv_53_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_53_d.bin: -------------------------------------------------------------------------------- 1 | brdmwgqkpimomdvohmswrcsmqxrnecrirkthurhfzqifnjfyrkcdcvwokjvgshugyvvstmpysdfdijxlqilbvndzlhefvsabitvqnymrwggalvhlghdjcuhomryvimsydoffrjnbocbnzzwlwfiurlnpduwgloyvvxycfnqmsljzemjsvxmvtmzeoptiezstngkyhnngvexmhxbqsvgvvhyzbyojnyljpknutddusxqbkskhkemjssuauclrfkdo -------------------------------------------------------------------------------- /test_vectors/generated_tv_54_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_54_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_54_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_54_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_54_d.bin: -------------------------------------------------------------------------------- 1 | pmgonlujgqbmfqgfsqaikywvnvswvonkrdvpubpstpaapmdazondczypdsighjphmtdwdbhlduczgcbgodejqvjsdovmpwvcsdqrpdwokjocdoudweamifdkosydkwgricvieenzofaxktcgghyihoscgraideuhrpetypyxbauwnbhtilzgrssrtytjiflqxuqbmohqagfbffthboqbhyyfxkgmqfgrarnkvmpunpupjvujnlvevaeighenbjtw -------------------------------------------------------------------------------- /test_vectors/generated_tv_55_c.bin: -------------------------------------------------------------------------------- 1 | zqvvbffplcmquzedqrzywpdyldqsaaqkgxuawlughnkguntfevnmzxhrijiiwxrdictkixzzquaflowsewpivbuulcfudzxppzyppbkqkvjuofsuvqisvvzdodnzuvoheppapdsjswmvioirknvehixmqdfegjshbzabwbamdpalpgsmrguylpydy0nydexquwxhgcppcbfmhypgmhcxpcdwynszejwbsoorlypmtqxlinzzzkoviqdaqpeatpd -------------------------------------------------------------------------------- /test_vectors/generated_tv_55_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_55_d.bin: -------------------------------------------------------------------------------- 1 | zqvvbffplcmquzedqrzywpdyldqsaaqkgxuawlughnkguntfevnmzxhrijiiwxrdictkixzzquaflowsewpivbuulcfudzxppzyppbkqkvjuofsuvqisvvzdodnzuvoheppapdsjswmvioirknvehixmqdfegjshbzabwbamdpalpgsmrguylpydyfloydexquwxhgcppcbfmhypgmhcxpcdwynszejwbsoorlypmtqxlinzzzkoviqdaqpeatpd -------------------------------------------------------------------------------- /test_vectors/generated_tv_56_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_56_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_56_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_56_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_56_d.bin: -------------------------------------------------------------------------------- 1 | dfkdxlblmkbjpmtmyfrxamhexwpqqqfatypunvzpktbkdobctlytffvpmsgeqlfxkjezsuqmladdnqmsscfztptftautypothpfslwxizczqyqmlhnglfwfuihlfbcrooijwivgmmwmgsbntyzyeqwhuplduuqcagiggxzxegwykbhqtfnerztppvmqsmpyucfiyxarpmgajoqinsxvfmibczaxlvkiauaxjpmcbtccaxrjzcuihrlumlxtqwguo -------------------------------------------------------------------------------- /test_vectors/generated_tv_57_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_57_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_57_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_57_d.bin: -------------------------------------------------------------------------------- 1 | izeumzyoonjjzxszyvqzrgdeavpzskanvvwfpwhvdoxzrihqgkbcxnpdpftfqcagqtpwvhwqjwrovovyimtutxkzyugumclpibpxzbetmkofpodrhztwbaoaacihbfdotbxlkixlpkrlnjqmfakscyevnerpcozeolxtiljvtwigwzmvszptqaegdmvxzvjvxayqoykjpoccpoprfkcfeoneusteclkcrfealuezlzbaiwkfruvdhvdhabjfrjcz -------------------------------------------------------------------------------- /test_vectors/generated_tv_58_c.bin: -------------------------------------------------------------------------------- 1 | ltmbrdypgruhfnlfnaqyhkqwmahsvfcidknntsrxgcfrwpihvpotqfooufwluhmhrfiibepdeijgkjjdvusvtsvegvwoxxxklxnsbketvjykazkhalegrgixrirpytspkgtgvisnkqbotyogbmmpvblbrcghowcpxjhryatsucqyxdpiebicppfbkwrurkwfsndwavdzxxswqnhtpqeudibfriidnrmyjfgghecxopaublfqosfgmanhzlxvszzp -------------------------------------------------------------------------------- /test_vectors/generated_tv_58_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_58_d.bin: -------------------------------------------------------------------------------- 1 | ltmbrdypgruhfnlfnaqyhkqwmahsvfcidknntsrxgcfrwpihvpotqfooufwluhmhrfiibepdeijgkjjdvusvtsvegvwoxxxklxnsbketvjykazkhalegrgixrirpytspkgtgvisnkqbotyogbmmpvblbrcghowcpxjhryatsucqyxdpiebicppfbkwrurkwfsndwavdzxxswqnhtpqeudibfriidnrmyjfgghecxopaublfqosfgmanhzlxvszzp -------------------------------------------------------------------------------- /test_vectors/generated_tv_59_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_59_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_59_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_59_d.bin: -------------------------------------------------------------------------------- 1 | dexpzeufmwigymxnowoqqmqyqknuewpsipibvdpmagogtqsjlsdyemxytjarurntrdywceetwvbpjrcgceuiuwhezytditlrinrimfckftlhxsiiclobzjhxcwdqdopxunfmyotozwkvjmgwyteneynxidnoffpxuayygigipdmesnowohodemklhiwpwjyexxjsaavszeurdtohqwfwguevaewpxmejwrvvqinvlxdokpixfzpahsvjytoqprde -------------------------------------------------------------------------------- /test_vectors/generated_tv_5_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_5_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_5_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_5_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_5_d.bin: -------------------------------------------------------------------------------- 1 | hqwpvwazmnfqlagyntukrifbnzbnhdnxwftdevcuyuocwvfuhpdigmtjgciotnxxnfcerewcbgpfurpyvhrunnyhnrdaijcdhyihqmgnwgezsvnnsrqoshrciivnzcermmunycpdgprmpjisobjffwvyxkzhlfjaijjwwxxseuvawittqpzvuxggwewhjyzcplyalacoclfnowuoufebrpyspdnqurzitypekmozaksowfekwefknchqghgdlkkj -------------------------------------------------------------------------------- /test_vectors/generated_tv_60_c.bin: -------------------------------------------------------------------------------- 1 | roazfzdsgjpljxukqjsokgckmjbafibgbmagimowtkhtbdveiovzzxltmjwawphfnkobamdmeguomiuhmqntyokbbrfyclyrearbftezlbbzdebbbpzpxzakxnjkkcvdpsdybbqctjbdnoonknjpzjytagbjbscoetirkhqpuuqkyxniehpxudlnqxfszyhkzewapfbmeexgziygmxgdsuoyduaxmnvqegcmotxlicvmrwcdgpukuvxjzilfurbp -------------------------------------------------------------------------------- /test_vectors/generated_tv_60_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_60_d.bin: -------------------------------------------------------------------------------- 1 | roazfzdsgjpljxukqjsokgckmjbafibgbmagimowtkhtbdveiovzzxltmjwawphfnkobamdmeguomiuhmqntyokbbrfyclyrearbftezlbbzdebbbpzpxzakxnjkkcvdpsdybbqctjbdnoonknjpzjytagbjbscoetirkhqpuuqkyxniehpxudlnqxfszyhkzewapfbmeexgziygmxgdsuoyduaxmnvqegcmotxlicvmrwcdgpukuvxjzilfurbp -------------------------------------------------------------------------------- /test_vectors/generated_tv_61_c.bin: -------------------------------------------------------------------------------- 1 | plynfgpihfrlgxjpfhpmxxgvkynebqzdwoybiovpknvzvwhenrzzfgslikbtwqeqhmyqnfiluzixfiynxevandhpxvvtiorezztdbrdhvvryajryoodwpqlnetmgftgkyiykfwmiekfhwzonjnuzzwobslwfhjihxclpakihckifkiuczxovldwydfawjbhbylzacpqnivxvjjiyacurjcviwrooluwowccjqufdnodgsfqeesbayetigtnlekgm -------------------------------------------------------------------------------- /test_vectors/generated_tv_61_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_61_d.bin: -------------------------------------------------------------------------------- 1 | plynfgpihfrlgxjpfhpmxxgvkynebqzdwoybiovpknvzvwhenrzzfgslikbtwqeqhmyqnfiluzixfiynxevandhpxvvtiorezztdbrdhvvryajryoodwpqlnetmgftgkyiykfwmiekfhwzonjnuzzwobslwfhjihxclpakihckifkiuczxovldwydfawjbhbylzacpqnivxvjjiyacurjcviwrooluwowccjqufdnodgsfqeesbayetigtnlekgm -------------------------------------------------------------------------------- /test_vectors/generated_tv_62_c.bin: -------------------------------------------------------------------------------- 1 | broezkunjavspywfrhkthhmxnvqbqvgpzgouppaaafbnpbtmuitvuglfhsxsfcbefirwoxuhnovtwintfkbnwxzsrrdqhswdmbkkmzpsduzsdkmbhztupyojnqqtljblijptaprdisafotrqiowdunmbwdnvbtnqnenrltpwkebscpuxvcdgcobxgozhodgvayxsjucmxtzamymshazcwkndhhaeeiwpcnulhtwgnmkqplqjihdtnjdxsbudlwtk -------------------------------------------------------------------------------- /test_vectors/generated_tv_62_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_62_d.bin: -------------------------------------------------------------------------------- 1 | broezkunjavspywfrhkthhmxnvqbqvgpzgouppaaafbnpbtmuitvuglfhsxsfcbefirwoxuhnovtwintfkbnwxzsrrdqhswdmbkkmzpsduzsdkmbhztupyojnqqtljblijptaprdisafotrqiowdunmbwdnvbtnqnenrltpwkebscpuxvcdgcobxgozhodgvayxsjucmxtzamymshazcwkndhhaeeiwpcnulhtwgnmkqplqjihdtnjdxsbudlwtk -------------------------------------------------------------------------------- /test_vectors/generated_tv_63_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_63_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_63_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_63_d.bin: -------------------------------------------------------------------------------- 1 | yhwhvfbzygiktycwthlcxyymrskkwqhncrbklytwoenvbcscweksohagsmwabjyrkglczbnwpjsyjiwurfguhbbtsfnezkixugpsmfddfxktgifqtquoqkxypiassifofuvxbtkuwnrbtsfmpohrijfvuaubemacivaoinbogmsbttfhbnopnccylnsqojximlnvbnzemuuebstwjacxiiresipbvvhhiiyuhugolhgnqmjfjchsmioxehzovfdu -------------------------------------------------------------------------------- /test_vectors/generated_tv_64_c.bin: -------------------------------------------------------------------------------- 1 | kajhknyvbzztmzecveqprojyueffacbnyrcvaypuoknpvrnd0klvvtquvjomaugibyzsbtxcinuqvzxbybushrogtqysbnfkemhcdhiyjcgypftkccajcojwkwhpjdkoaiyvvgrlxplyvcgrqzdosrdqtnsykscjblxflpluiscifrgtykdumfgmzdhjg0Umoepdholuoefwyjgzinmkbgkptkwedlshlpvfhscclgwgbdfpenfzqiswjhibl -------------------------------------------------------------------------------- /test_vectors/generated_tv_64_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_64_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_64_d.bin: -------------------------------------------------------------------------------- 1 | kajhknyvbzztmzecveqprojyueffacbnyrcvaypuoknpvrndyrcklvvtquvjomaugibyzsbtxcinuqvzxbybushrogtqysbnfkemhcdhiyjcgypftkccajcojwkwhpjdkoaiyvvgrlxplyvcgrqzdosrdqtnsykscjblxflpluiscifrgtykdumfgmzdhjgjcgmoepdholuoefwyjgzinmkbgkptkwedlshlpvfhscclgwgbdfpenfzqiswjhibl -------------------------------------------------------------------------------- /test_vectors/generated_tv_65_c.bin: -------------------------------------------------------------------------------- 1 | ufzvdurqddevnrguuikvsdtziosoykpzkpfdbdzzknoyzhdgrtenerspexgmqgetuvwqnmmsfhcczmckompskirygfnmuzabyvaicbfwsavofofjnovjrujcihdxizehfrqhlebaftgaaaydhnqfczxyqfhbrvu0aidhcpzjcdsvviwfsmtmajhyccexyvkuaymubqilegnvuzwfdrrxnexvdyayfrynyjgjihzjfgzddzkjevopqmmmwahhxbg -------------------------------------------------------------------------------- /test_vectors/generated_tv_65_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_65_d.bin: -------------------------------------------------------------------------------- 1 | ufzvdurqddevnrguuikvsdtziosoykpzkpfdbdzzknoyzhdgrtenerspexgmqgetuvwqnmmsfhcczmckompskirygfnmuzabyvaicbfwsavofofjnovjrujcihdxizehfrqhlebaftgaaaydhnqfczxyqfhbrvuetuidhcpzjcdsvviwfsmtmajhyccexyvkuaymubqilegnvuzwfdrrxnexvdyayfrynyjgjihzjfgzddzkjevopqmmmwahhxbg -------------------------------------------------------------------------------- /test_vectors/generated_tv_66_c.bin: -------------------------------------------------------------------------------- 1 | ibpigddoigjvwdfnfbokqjojgsgjtevtcnkkwiwpucwahecoxxvicmvkhrttunbthzkhqzflfkrchohlklgednminaxtbvcienbryjkupo0Nnoiskuclppmcraexnirebfbgbbzpaewqmebpobtmstisnmuxmmotvdtxmbwzwepxjwwkuogvjbkzxvqkuerbzujhsjmbzvfqiaskfhljnmhodlhnlnxuvrwncjfenefrbiwthvxehjgxxxlupzg -------------------------------------------------------------------------------- /test_vectors/generated_tv_66_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_66_d.bin: -------------------------------------------------------------------------------- 1 | ibpigddoigjvwdfnfbokqjojgsgjtevtcnkkwiwpucwahecoxxvicmvkhrttunbthzkhqzflfkrchohlklgednminaxtbvcienbryjkupotevnoiskuclppmcraexnirebfbgbbzpaewqmebpobtmstisnmuxmmotvdtxmbwzwepxjwwkuogvjbkzxvqkuerbzujhsjmbzvfqiaskfhljnmhodlhnlnxuvrwncjfenefrbiwthvxehjgxxxlupzg -------------------------------------------------------------------------------- /test_vectors/generated_tv_67_c.bin: -------------------------------------------------------------------------------- 1 | ivxbocizzhbeguwijyimgqugmwxrktcyurfgyfsgvdxqccqikmdtogjemtatvcjktlsktfxixbnhfqtaqgouzxnlvgbbqfufuuxuzpbqa0$zlchodnlqhzdxdgscmmgnjhlpfyplhcqubhltqeyddysvdaqeitfjlrqhqblwcvqmarkgapdniheahmeynzuwjdegkgekbaxldtdcxoetxkrblnht0Ziauitlanohtmulptqhfmioonuoidgxzh -------------------------------------------------------------------------------- /test_vectors/generated_tv_67_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_67_d.bin: -------------------------------------------------------------------------------- 1 | ivxbocizzhbeguwijyimgqugmwxrktcyurfgyfsgvdxqccqikmdtogjemtatvcjktlsktfxixbnhfqtaqgouzxnlvgbbqfufuuxuzpbqafxizlchodnlqhzdxdgscmmgnjhlpfyplhcqubhltqeyddysvdaqeitfjlrqhqblwcvqmarkgapdniheahmeynzuwjdegkgekbaxldtdcxoetxkrblnhtlpfiauitlanohtmulptqhfmioonuoidgxzh -------------------------------------------------------------------------------- /test_vectors/generated_tv_68_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_68_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_68_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_68_d.bin: -------------------------------------------------------------------------------- 1 | prdnlyvkddgmccthbpdeqqrcxmohlahmtxavqiznncsypnmwswwxjsaaubakpvxbkcpgqkbrnhiwvxaiaaiwjytdfzhnkrxziaoxtmczkubfiqhnqwwsfolvhpfckmslbbzcsojcxotfzvpwqcwnmpecphaoritcfqebpiqvcocfwacncuopnmfuymyuxvywwhbvkfugbrisxvsviuprtsmoeexmqvmtadvtxuvkilsxgaoxgcnjhmhgqojkryck -------------------------------------------------------------------------------- /test_vectors/generated_tv_69_c.bin: -------------------------------------------------------------------------------- 1 | uglswbymjnlmuuizteszuatsohcckbskmxyemkzdrjhsfnzsqrspjrzgjvvvdwflwdwkzlkcbvppdyhqgjtdtnapaqwybctbfwqxesjobqxovwpbiumusbdbakgmltcekohppnjqgkvyxhbcxkjpcccjkocpdfqkbphckaiakmlfdqmckwsarvuzeugwbepxixoryojretfvzgdsttloxaiualoeedbflzdxjeuqtfknzatxllczjvyvpqcjaotc -------------------------------------------------------------------------------- /test_vectors/generated_tv_69_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_69_d.bin: -------------------------------------------------------------------------------- 1 | uglswbymjnlmuuizteszuatsohcckbskmxyemkzdrjhsfnzsqrspjrzgjvvvdwflwdwkzlkcbvppdyhqgjtdtnapaqwybctbfwqxesjobqxovwpbiumusbdbakgmltcekohppnjqgkvyxhbcxkjpcccjkocpdfqkbphckaiakmlfdqmckwsarvuzeugwbepxixoryojretfvzgdsttloxaiualoeedbflzdxjeuqtfknzatxllczjvyvpqcjaotc -------------------------------------------------------------------------------- /test_vectors/generated_tv_6_c.bin: -------------------------------------------------------------------------------- 1 | lodetrbeczrutxfebsqoufiirmvhomqdivjoeumlxojfxsmjsrjqbuvxztlueftngficpfuyrkhrfjgbldquimhnbrtkinrmgjjijnpnxqbrswqsmilioctjjxhpjwfvemsuvjhskirtyjzphgjbfjamescbtrqflovzsmkajdgvuayrbixdneboeghtetvfhseemggydummwaaincovvtttxhbjaqjgavbjnacpirnvfgjngzbmnzutcohf0Dm -------------------------------------------------------------------------------- /test_vectors/generated_tv_6_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_6_d.bin: -------------------------------------------------------------------------------- 1 | lodetrbeczrutxfebsqoufiirmvhomqdivjoeumlxojfxsmjsrjqbuvxztlueftngficpfuyrkhrfjgbldquimhnbrtkinrmgjjijnpnxqbrswqsmilioctjjxhpjwfvemsuvjhskirtyjzphgjbfjamescbtrqflovzsmkajdgvuayrbixdneboeghtetvfhseemggydummwaaincovvtttxhbjaqjgavbjnacpirnvfgjngzbmnzutcohfeghm -------------------------------------------------------------------------------- /test_vectors/generated_tv_70_c.bin: -------------------------------------------------------------------------------- 1 | fsenxrwoovtlgcpdddmwpivmtabetblbsxxvzruoqmxcxfewodabysygswelaiyiboinyuhxgiwyubwzrjcjembewseabxyfziiowpfiuhkyjegxjuxnagxafsistcgeorxzhcbim0Npwwchnlphhmbpumthjldultyreesgenhhjufgbmbgplvxhwnkdimsaquqxdwyidcwdzbzhspsdpbbmgwhqbrnmgqgnhiszhldmrmuqeskqzevdechepj -------------------------------------------------------------------------------- /test_vectors/generated_tv_70_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_70_d.bin: -------------------------------------------------------------------------------- 1 | fsenxrwoovtlgcpdddmwpivmtabetblbsxxvzruoqmxcxfewodabysygswelaiyiboinyuhxgiwyubwzrjcjembewseabxyfziiowpfiuhkyjegxjuxnagxafsistcgeorxzhcbimlaipwwchnlphhmbpumthjldultyreesgenhhjufgbmbgplvxhwnkdimsaquqxdwyidcwdzbzhspsdpbbmgwhqbrnmgqgnhiszhldmrmuqeskqzevdechepj -------------------------------------------------------------------------------- /test_vectors/generated_tv_71_c.bin: -------------------------------------------------------------------------------- 1 | rqaksuuoednondjusdpyrtyxffvbtpfwvvbjqoccoajectupogalpvxeencmhlnwjaxyl01cejlkermakvgyxqfhulcojolsyecsfjeugkrworsvarbuqxxveevckmnlaphdzzklzlwgpupmexlnxrzkahsdintvqnymfgtqigjxcktdwdylcjhrraoniremywb0uwpybuaqndglsjjuvvwrpugxlvfmpfqajzoqmwacuktzxkyjstvnpaoapk -------------------------------------------------------------------------------- /test_vectors/generated_tv_71_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_71_d.bin: -------------------------------------------------------------------------------- 1 | rqaksuuoednondjusdpyrtyxffvbtpfwvvbjqoccoajectupogalpvxeencmhlnwjaxylrtycejlkermakvgyxqfhulcojolsyecsfjeugkrworsvarbuqxxveevckmnlaphdzzklzlwgpupmexlnxrzkahsdintvqnymfgtqigjxcktdwdylcjhrraoniremywbmakwpybuaqndglsjjuvvwrpugxlvfmpfqajzoqmwacuktzxkyjstvnpaoapk -------------------------------------------------------------------------------- /test_vectors/generated_tv_72_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_72_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_72_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_72_d.bin: -------------------------------------------------------------------------------- 1 | dfkwlkwiuyujrxegkdrtmbehscgiqkdxwgvhepltbaranbpgxnkptcsrdzhxzxjocqxdgbjjukdcyqudpwzdxvfdupcamapvfvojbrjblvxlozqrtizlahvpobqszmklxpdmskrtujqnhvdettedngxvnpoykgxdprxybkpwhvfeqztwtzrvjllzogevheddtbpcrvrcrjbxdzywdyswnrojekgxzxhjnsnyjipmogbtaazvtdecqpgivofqfciv -------------------------------------------------------------------------------- /test_vectors/generated_tv_73_c.bin: -------------------------------------------------------------------------------- 1 | pamytifxoddtkbdiclcnxdqlvwhrsiyilfidftfhhbyguuuhuvkdfbsnphfmfzjutwiwtensattlvytmczgrjcsskejhvmxxkgokmfsbrzltbzadvcktaedxwutdibfbgjyjqwjdrynasvfppkqvljygykhnvgkqgrrxxsnjrweizfnsvtfcmxmrxsrryolkhwhaanzrceqgbvrbjguzzwfegtibqelgwrtoaetfgqkmayutsyosvwmmdvrnkvgi -------------------------------------------------------------------------------- /test_vectors/generated_tv_73_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_73_d.bin: -------------------------------------------------------------------------------- 1 | pamytifxoddtkbdiclcnxdqlvwhrsiyilfidftfhhbyguuuhuvkdfbsnphfmfzjutwiwtensattlvytmczgrjcsskejhvmxxkgokmfsbrzltbzadvcktaedxwutdibfbgjyjqwjdrynasvfppkqvljygykhnvgkqgrrxxsnjrweizfnsvtfcmxmrxsrryolkhwhaanzrceqgbvrbjguzzwfegtibqelgwrtoaetfgqkmayutsyosvwmmdvrnkvgi -------------------------------------------------------------------------------- /test_vectors/generated_tv_74_c.bin: -------------------------------------------------------------------------------- 1 | mrazrmmzblwvchygaebkdzenobqemnpqwoejsuixfgagtylpgsyepwtprpjavokvilgpovynvbebzavzzxpfiphlttqoqfacfautddsndwbgfcjreipzshlkywgynpcslqtkvwdxfwqtdfupooqdbktrzyphdqt01norzikhpddrcumrufggbatzhrnxwxvaizbrkwuxtsweibhqjgvcioxawtcbyqzmwpqqymooptexqyhaaxmcubyjnkpmbpz -------------------------------------------------------------------------------- /test_vectors/generated_tv_74_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_74_d.bin: -------------------------------------------------------------------------------- 1 | mrazrmmzblwvchygaebkdzenobqemnpqwoejsuixfgagtylpgsyepwtprpjavokvilgpovynvbebzavzzxpfiphlttqoqfacfautddsndwbgfcjreipzshlkywgynpcslqtkvwdxfwqtdfupooqdbktrzyphdqtjrenorzikhpddrcumrufggbatzhrnxwxvaizbrkwuxtsweibhqjgvcioxawtcbyqzmwpqqymooptexqyhaaxmcubyjnkpmbpz -------------------------------------------------------------------------------- /test_vectors/generated_tv_75_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_75_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_75_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_75_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_75_d.bin: -------------------------------------------------------------------------------- 1 | webcynkrrwyamzyuiipytanafrxarjoslqouudakbvzxfclkwnuphbvzqzslcsnolsrzvyagshwmwvhxrwoohddmbhtcxdqwtqrspojlvlvyyivuxuyqzdadaexsgtsobjtbrdxbehrhciyniplhhhpjpozthjjmiwjtlyzmmhbeqevvrcgjpgczavdctdflgdurpeggjxrdknurxklemtnwpvdrkygkifyrufwnnollvqcnhyeidurpptaqkzgw -------------------------------------------------------------------------------- /test_vectors/generated_tv_76_c.bin: -------------------------------------------------------------------------------- 1 | qaexrpzdbcwujbstotlzzjjghbsotzghaprtgpephdhxryshgsetqutemdufphnldnsnwebtovenrgjhfauoihimycbqootfhis0_vstdoshcjjkif0Bltxvgzdzis0nsutsqkfkcmhztipuprevgigyvgsjocvrehtxuyucybxtmxpjbhofikskmqlletmtokqsnzjhqywrjcedfppagenbglukkgubvulmglnknmpmvwuzkfyxircffzsaz -------------------------------------------------------------------------------- /test_vectors/generated_tv_76_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_76_d.bin: -------------------------------------------------------------------------------- 1 | qaexrpzdbcwujbstotlzzjjghbsotzghaprtgpephdhxryshgsetqutemdufphnldnsnwebtovenrgjhfauoihimycbqootfhisrpzvstdoshcjjkifsetltxvgzdzislzzsutsqkfkcmhztipuprevgigyvgsjocvrehtxuyucybxtmxpjbhofikskmqlletmtokqsnzjhqywrjcedfppagenbglukkgubvulmglnknmpmvwuzkfyxircffzsaz -------------------------------------------------------------------------------- /test_vectors/generated_tv_77_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_77_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_77_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_77_d.bin: -------------------------------------------------------------------------------- 1 | czskyinpxudbljrpogycbfydqxnntxjwwvtlsrrgobgaehukttwjznbqwxgltfphfaorwekbpcazotdtyhgzqvfkfbpxscwzuxienkfgbcyrcbyggtewvwduwyeyyqiyimyfgygeenlvqqxyktpkucolilevgavxxulopouqyukauxkxjqezlkzsobouoyxnoehoilnnaksyeqpmkehpvwseiqwlmwpiidiibnappnijwhrcdifsuwmligcazodl -------------------------------------------------------------------------------- /test_vectors/generated_tv_78_c.bin: -------------------------------------------------------------------------------- 1 | wdjiafizqasdtgmxpwgwogqbeemoapbqtqwgslcotznvacvzgxjrbriiqtlhbftfrjupjgtusxwwgrdfmdxbxzjozjstyvwqqdomlllkrtyzpfxhnsyosoldrpxispwzyldsntctoylmsykqzrtspiclkargbranaivznmmasoizxfcsebwgiyjuihcirfsiwxdnuyazrufzciswyxoslmcwedpoviwcsaxafhufhpxzaiumauohbwoujtfzpaos -------------------------------------------------------------------------------- /test_vectors/generated_tv_78_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_78_d.bin: -------------------------------------------------------------------------------- 1 | wdjiafizqasdtgmxpwgwogqbeemoapbqtqwgslcotznvacvzgxjrbriiqtlhbftfrjupjgtusxwwgrdfmdxbxzjozjstyvwqqdomlllkrtyzpfxhnsyosoldrpxispwzyldsntctoylmsykqzrtspiclkargbranaivznmmasoizxfcsebwgiyjuihcirfsiwxdnuyazrufzciswyxoslmcwedpoviwcsaxafhufhpxzaiumauohbwoujtfzpaos -------------------------------------------------------------------------------- /test_vectors/generated_tv_79_c.bin: -------------------------------------------------------------------------------- 1 | uxbyyhdypehqsergzgnrbszicabptivwuqbafsktdsqdxfvpwmygjudyahtirtsuoxkxbihcwplelcgpxldneshyjqybplkxmqwtxysstsjbspdlfpwunqgzhovgtucmiigsfpavtzfrushkrdgjkaweeanxujnmkwwvkvmrqiupb03zfce0taymhhdwacuenbiunomwayorccnpl0xzfeygmlyvoqethmpirgnmxuvwqvikucsmozdeplsqq -------------------------------------------------------------------------------- /test_vectors/generated_tv_79_cw.bin: -------------------------------------------------------------------------------- 1 |   -------------------------------------------------------------------------------- /test_vectors/generated_tv_79_d.bin: -------------------------------------------------------------------------------- 1 | uxbyyhdypehqsergzgnrbszicabptivwuqbafsktdsqdxfvpwmygjudyahtirtsuoxkxbihcwplelcgpxldneshyjqybplkxmqwtxysstsjbspdlfpwunqgzhovgtucmiigsfpavtzfrushkrdgjkaweeanxujnmkwwvkvmrqiupbvgtzfceoxkaymhhdwacuenbiunomwayorccnplbplzfeygmlyvoqethmpirgnmxuvwqvikucsmozdeplsqq -------------------------------------------------------------------------------- /test_vectors/generated_tv_7_c.bin: -------------------------------------------------------------------------------- 1 | thhywkxhpcyvkqppyczxqyuxhzsimjzadhzdsqniknowirarrsxpkxskifkfanfvhwspkdihehmtgoavcladkbktnietigfvujzpijgdakmorcxnymqkoy0Wtrpkvcejaalleaitshwmktkxwxixdpabvpzpbeyxbnzxvqpsblbjwgnysommksqdthqxwvkpdghfilwdsnktgrklkkhzghcgeylqfgtzlqrfwvilcbpjfyamrficycwwjo0,xx -------------------------------------------------------------------------------- /test_vectors/generated_tv_7_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_7_d.bin: -------------------------------------------------------------------------------- 1 | thhywkxhpcyvkqppyczxqyuxhzsimjzadhzdsqniknowirarrsxpkxskifkfanfvhwspkdihehmtgoavcladkbktnietigfvujzpijgdakmorcxnymqkoyadhtrpkvcejaalleaitshwmktkxwxixdpabvpzpbeyxbnzxvqpsblbjwgnysommksqdthqxwvkpdghfilwdsnktgrklkkhzghcgeylqfgtzlqrfwvilcbpjfyamrficycwwjoklkxx -------------------------------------------------------------------------------- /test_vectors/generated_tv_80_c.bin: -------------------------------------------------------------------------------- 1 | ewirnufooecugvpmbstnyvfhsvbfjgniizcofjzpodosniajzvxfbjzjfrycyckkzyrunyzsbegyxclyuqtdmjiudhzwtgqhrmhusjtuxklsfnwfnkvzbxfchtudghehabpurtesdzesjecnovzqspyzbbmwtyzgcvfiikwabjhdbkgvqwfhhyujjwiuhfknymtjemzkcgtdyapnubnopbqkehnrllzexcjgfauopqeaahkjdeswvgyualyllyvk -------------------------------------------------------------------------------- /test_vectors/generated_tv_80_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_80_d.bin: -------------------------------------------------------------------------------- 1 | ewirnufooecugvpmbstnyvfhsvbfjgniizcofjzpodosniajzvxfbjzjfrycyckkzyrunyzsbegyxclyuqtdmjiudhzwtgqhrmhusjtuxklsfnwfnkvzbxfchtudghehabpurtesdzesjecnovzqspyzbbmwtyzgcvfiikwabjhdbkgvqwfhhyujjwiuhfknymtjemzkcgtdyapnubnopbqkehnrllzexcjgfauopqeaahkjdeswvgyualyllyvk -------------------------------------------------------------------------------- /test_vectors/generated_tv_81_c.bin: -------------------------------------------------------------------------------- 1 | wsutffofpmaicqbnycmilnnbpohcdhkgvuylozuytvvmfsizxjvlrdnolpnrdyrbqyfdyebbwgjbskrobuzceqsoyyuckusfayxwflgkcqqunlponu0#wgpojrhxsczvfkciojkdgsijtwbrexhaseyugxstdezhhbxmtlbeqtgwmdhdwjewnezdtaahvszoqgidjqkdobodzyhejxidboegznmfaddwpeqygmqrdpztagwypgpgihohzcirwbh -------------------------------------------------------------------------------- /test_vectors/generated_tv_81_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_81_d.bin: -------------------------------------------------------------------------------- 1 | wsutffofpmaicqbnycmilnnbpohcdhkgvuylozuytvvmfsizxjvlrdnolpnrdyrbqyfdyebbwgjbskrobuzceqsoyyuckusfayxwflgkcqqunlponuobuwgpojrhxsczvfkciojkdgsijtwbrexhaseyugxstdezhhbxmtlbeqtgwmdhdwjewnezdtaahvszoqgidjqkdobodzyhejxidboegznmfaddwpeqygmqrdpztagwypgpgihohzcirwbh -------------------------------------------------------------------------------- /test_vectors/generated_tv_82_c.bin: -------------------------------------------------------------------------------- 1 | drxkztfculaqwaisvcwoflntllvvkmdptjznqsbdiudqiavjxemjspqyureyksvsnsdwcjmujdefupdwqxsowmhzgamdwslpvzlpjhftzrbvphjlo020aiujcjwdewgbndqdvjzxoyvbybrwafqvxwnmbumgcygcldwvwhjrtneqxlblgjnrnfxstshrofokibeskuny0Jngdooogwccrdwwfaomesplf05iutthjcbyg0$lxguhgqlkfoy -------------------------------------------------------------------------------- /test_vectors/generated_tv_82_cw.bin: -------------------------------------------------------------------------------- 1 | `@ -------------------------------------------------------------------------------- /test_vectors/generated_tv_82_d.bin: -------------------------------------------------------------------------------- 1 | drxkztfculaqwaisvcwoflntllvvkmdptjznqsbdiudqiavjxemjspqyureyksvsnsdwcjmujdefupdwqxsowmhzgamdwslpvzlpjhftzrbvphjlosnsofliujcjwdewgbndqdvjzxoyvbybrwafqvxwnmbumgcygcldwvwhjrtneqxlblgjnrnfxstshrofokibeskunygbnngdooogwccrdwwfaomesplflbliutthjcbygngdlxguhgqlkfoy -------------------------------------------------------------------------------- /test_vectors/generated_tv_83_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_83_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_83_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_83_d.bin: -------------------------------------------------------------------------------- 1 | nudleauvbmzwluefuhboiaggamiatzziguuvuzctvipeitogjzvbqbodmgyfbjoropnedxhlozjqgetzqucjutjhvqfffpporbzsuiksyccdzaysnzbmuhnpbvfaatkgqwwxbdtwggtdcqnkqgmfkpnhdoekosobltoucqfvricfzelmhfbrgvcbljmvfvjgkexkgvevegcgcijttzjejssidjaihaqnukqmqqfsqoaurnqvuzcrkqdctgbwixou -------------------------------------------------------------------------------- /test_vectors/generated_tv_84_c.bin: -------------------------------------------------------------------------------- 1 | cekffcdfjoqbtwgcqiinovptnwoemgxehjleskfyyoqsnkhbqmgmpraxkrgdcwbvitdkburluqejpybqtfkiwyhoynaqtkbzrnjmnfkymzouchxrgoczjfzercdcirnbciuqgfekzfrjrivarnccuhsvednokszvzoojsmlamuvnuiqzbbvebruwlpricgyhhfwveearcofzoqyexxhihghcefvqptagptbvwolcvhhykntjzzzgmkmuumbjdtty -------------------------------------------------------------------------------- /test_vectors/generated_tv_84_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_84_d.bin: -------------------------------------------------------------------------------- 1 | cekffcdfjoqbtwgcqiinovptnwoemgxehjleskfyyoqsnkhbqmgmpraxkrgdcwbvitdkburluqejpybqtfkiwyhoynaqtkbzrnjmnfkymzouchxrgoczjfzercdcirnbciuqgfekzfrjrivarnccuhsvednokszvzoojsmlamuvnuiqzbbvebruwlpricgyhhfwveearcofzoqyexxhihghcefvqptagptbvwolcvhhykntjzzzgmkmuumbjdtty -------------------------------------------------------------------------------- /test_vectors/generated_tv_85_c.bin: -------------------------------------------------------------------------------- 1 | tmmgotmdxsjhujnehqbsruyhhepqdyjtceeheliemfcqnzsfnfnwtxonhncjqfstnvvjunmbccqyvxfxscklvlctfexnqsxhvzdyyaendooxnfypwihjbizfvetgcroxzwdiiiqyzcbrmom0#iciypqoohrykkaob0wwuxdbmhjtbriwetawhrddnwjsnangoqspbrgylqrbsdknjibeduxmovzrdgzfruimgvbjkeeqprjztaswvdgweackck -------------------------------------------------------------------------------- /test_vectors/generated_tv_85_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_85_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_85_d.bin: -------------------------------------------------------------------------------- 1 | tmmgotmdxsjhujnehqbsruyhhepqdyjtceeheliemfcqnzsfnfnwtxonhncjqfstnvvjunmbccqyvxfxscklvlctfexnqsxhvzdyyaendooxnfypwihjbizfvetgcroxzwdiiiqyzcbrmomnfyiciypqoohrykkaobqnzwuxdbmhjtbriwetawhrddnwjsnangoqspbrgylqrbsdknjibeduxmovzrdgzfruimgvbjkeeqprjztaswvdgweackck -------------------------------------------------------------------------------- /test_vectors/generated_tv_86_c.bin: -------------------------------------------------------------------------------- 1 | iokyfhjcrtrnwcnkawzepfkgygosdavivtilkqcvazdyacwmubrisxoupriynbeidoobseyuobmvccwgladsjsfhbofgcucxhgwfkiqubaqoanzpnsitfzpwhisojceiwpgkpuhqoqfetguummlaszgwpwpqbyjeycvepoycgujnftwyurwhcczkztrhkudwjwwnagcqomhmhtrcyf0_imtpcafvpbnpteakcqlgnkymuuo0rlfbbyucfmyily -------------------------------------------------------------------------------- /test_vectors/generated_tv_86_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_86_d.bin: -------------------------------------------------------------------------------- 1 | iokyfhjcrtrnwcnkawzepfkgygosdavivtilkqcvazdyacwmubrisxoupriynbeidoobseyuobmvccwgladsjsfhbofgcucxhgwfkiqubaqoanzpnsitfzpwhisojceiwpgkpuhqoqfetguummlaszgwpwpqbyjeycvepoycgujnftwyurwhcczkztrhkudwjwwnagcqomhmhtrcyftfzimtpcafvpbnpteakcqlgnkymuuoeiwlfbbyucfmyily -------------------------------------------------------------------------------- /test_vectors/generated_tv_87_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_87_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_87_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_87_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_87_d.bin: -------------------------------------------------------------------------------- 1 | cwrlqfnkytwzqwxgpthbnfkzdsyzlynwrouxdkxkuhtwtmodohrcgbtkraiindfccnixiecfwoeducpsfytnhshczycfehxmsozzneawohxnadrwdujiylypjvxfjkboafzqminqogxakryoznepnvnjpepenlazpgpmrumssnnoodmubwjafoslomxgqzuroaywqzzvkjhxvehnixubejtxvqqiltyjcecxhrctbpooagjfgdzzynaokgvnprjb -------------------------------------------------------------------------------- /test_vectors/generated_tv_88_c.bin: -------------------------------------------------------------------------------- 1 | inuyffpobfrfxqhbspdehmzlwwyscrjfxvvzcydgusftwcusvjzjlbbgikkxpqtfcdslxsrsziofpabcvwmrrcabrfccmvhuvbzbcttkwhouabwbvxgbc0Zcopibedkvmudvtczdlpfvw0qmlyqkydymslrkcubipwrpkjhcmigrzlxovqxjkozwwauygbdiqgbpsq0+zredliuydmipygyejftxtstxxfcotztyyiximwyvodkzkciqnnnq -------------------------------------------------------------------------------- /test_vectors/generated_tv_88_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_88_d.bin: -------------------------------------------------------------------------------- 1 | inuyffpobfrfxqhbspdehmzlwwyscrjfxvvzcydgusftwcusvjzjlbbgikkxpqtfcdslxsrsziofpabcvwmrrcabrfccmvhuvbzbcttkwhouabwbvxgbcscrcopibedkvmudvtczdlpfvwopiqmlyqkydymslrkcubipwrpkjhcmigrzlxovqxjkozwwauygbdiqgbpsqkcuzredliuydmipygyejftxtstxxfcotztyyiximwyvodkzkciqnnnq -------------------------------------------------------------------------------- /test_vectors/generated_tv_89_c.bin: -------------------------------------------------------------------------------- 1 | bfobxoblknhkzsmrxfrxzxyfgzqogqeaqjhtcrbdeixqyadjhzdlvttknirqeynxpgslejm0 dnaluumhbbagkeacnbjrvhocdtvzinkmnukypovmfagzlqajgvjhkrkdldnbsi@Hmtqzmqjtafcxvmzoqqcchbtiugpowbckviqapembaoyseropdehwdzosainailpbfqdkduzoaxsndmgvqrbhqnravakxpuhivogjtsxggjxincaiyxrj -------------------------------------------------------------------------------- /test_vectors/generated_tv_89_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_89_d.bin: -------------------------------------------------------------------------------- 1 | bfobxoblknhkzsmrxfrxzxyfgzqogqeaqjhtcrbdeixqyadjhzdlvttknirqeynxpgslejmrqednaluumhbbagkeacnbjrvhocdtvzinkmnukypovmfagzlqajgvjhkrkdldnbsipgslmtqzmqjtafcxvmzoqqcchbtiugpowbckviqapembaoyseropdehwdzosainailpbfqdkduzoaxsndmgvqrbhqnravakxpuhivogjtsxggjxincaiyxrj -------------------------------------------------------------------------------- /test_vectors/generated_tv_8_c.bin: -------------------------------------------------------------------------------- 1 | mlzlpyglvhghklswtgboqppejcmdgnycjprjpqvjljngkrynjtfsdxanwglthvkwshdunoboyhonbhyrmpdptvwmcexkcyykazamqqpdkadfkttdtzwyhhdjvtcmnerhddeofqzcjkjdjgoyrentlhrbztgaskkrodsiebptaebcpqxdrdpiaqzhhlpeh0wzzroiytapevgff02efcqdtjppjdswrlashbocsfpthgmvfontqwpgaeopgzucb -------------------------------------------------------------------------------- /test_vectors/generated_tv_8_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_8_d.bin: -------------------------------------------------------------------------------- 1 | mlzlpyglvhghklswtgboqppejcmdgnycjprjpqvjljngkrynjtfsdxanwglthvkwshdunoboyhonbhyrmpdptvwmcexkcyykazamqqpdkadfkttdtzwyhhdjvtcmnerhddeofqzcjkjdjgoyrentlhrbztgaskkrodsiebptaebcpqxdrdpiaqzhhlpehkrowzzroiytapevgffkkrefcqdtjppjdswrlashbocsfpthgmvfontqwpgaeopgzucb -------------------------------------------------------------------------------- /test_vectors/generated_tv_90_c.bin: -------------------------------------------------------------------------------- 1 | vnpbqemwujvdtfcbysbkbpmazbiuiilpcoroubconaldkvilhqhcaxlyyxlthicbmtjmjwxyphhudxgwjpsomwmngzeqsblvcepfdxpicnilrgimmgpbmaxmgopzauijrmynltvsxqeausepijudqdafppmjgzixqvzevcqgotavbhvjjmbmdkoggeiabfoydkdpdtkaokmpkxgxmjoihzzjjaqxomhywumiiugjqhshtezngappehqs0ssqpw -------------------------------------------------------------------------------- /test_vectors/generated_tv_90_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_90_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_90_d.bin: -------------------------------------------------------------------------------- 1 | vnpbqemwujvdtfcbysbkbpmazbiuiilpcoroubconaldkvilhqhcaxlyyxlthicbmtjmjwxyphhudxgwjpsomwmngzeqsblvcepfdxpicnilrgimmgpbmaxmgopzauijrmynltvsxqeausepijudqdafppmjgzixqvzevcqgotavbhvjjmbmdkoggeiabfoydkdpdtkaokmpkxgxmjoihzzjjaqxomhywumiiugjqhshtezngappehqsiiussqpw -------------------------------------------------------------------------------- /test_vectors/generated_tv_91_c.bin: -------------------------------------------------------------------------------- 1 | dtwfowjwownyzngonddwolbjrjntrwrdgoayqydbksgwauywodxbpyzbrvmufliggnxkqgysmqhcuyzuwjykpscnhqwhnxfywjaumwdiotivzdixldbrledvom0!ohppayxqkthfapdolptpwczznvqmwxzjcgbpcsppwwxnjilaqtrobmtfbohaulxahfpdhmoftbxvgywtnopngrptokhhjlddvsehtslpxfjmctuadciurz0milykcijje -------------------------------------------------------------------------------- /test_vectors/generated_tv_91_cw.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test_vectors/generated_tv_91_d.bin: -------------------------------------------------------------------------------- 1 | dtwfowjwownyzngonddwolbjrjntrwrdgoayqydbksgwauywodxbpyzbrvmufliggnxkqgysmqhcuyzuwjykpscnhqwhnxfywjaumwdiotivzdixldbrledvomqwhohppayxqkthfapdolptpwczznvqmwxzjcgbpcsppwwxnjilaqtrobmtfbohaulxahfpdhmoftbxvgywtnopngrptokhhjlddvsehtslpxfjmctuadciurzjldmilykcijje -------------------------------------------------------------------------------- /test_vectors/generated_tv_92_c.bin: -------------------------------------------------------------------------------- 1 | jnbxngvjewgduxvsnhxknaowpjaeitnxohadjcpskxzdwunmxlfmsqelylxckdgbudtmvsga03ztbdhyqhawgedsbqezgyuotvxhigswprcjgvdpeavrczvahnfaljqmjjakesgxxzzschqpejquwkqukwmgvzrilozacphofhahpvnysyllnuroepqhlgeqrsoxfxovgamlobrhvjpwucddiutzyxrmnsaufakoduoonanfoyuwyvvgquvpjge -------------------------------------------------------------------------------- /test_vectors/generated_tv_92_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_92_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_92_d.bin: -------------------------------------------------------------------------------- 1 | jnbxngvjewgduxvsnhxknaowpjaeitnxohadjcpskxzdwunmxlfmsqelylxckdgbudtmvsgaaowztbdhyqhawgedsbqezgyuotvxhigswprcjgvdpeavrczvahnfaljqmjjakesgxxzzschqpejquwkqukwmgvzrilozacphofhahpvnysyllnuroepqhlgeqrsoxfxovgamlobrhvjpwucddiutzyxrmnsaufakoduoonanfoyuwyvvgquvpjge -------------------------------------------------------------------------------- /test_vectors/generated_tv_93_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_93_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_93_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_93_d.bin: -------------------------------------------------------------------------------- 1 | snapwegogbjkntmbyzfatghrquvswtzpthgndqycxhppksfwsoddemhknbizrfqgfconnjuuxmnopywekydqjoqgfuzersdfwmfzpftfhilxmvjdoerswxoyexovyfvafbrwbjjinckagxlnxoemibdljqwrmleeoxidlrpclzqkweftsogbfurjlahwrclyitiewofyttspfhiwmpncgkgqqnowzuftobwevzknslylkuqlsevwjjqiadgbpehs -------------------------------------------------------------------------------- /test_vectors/generated_tv_94_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_94_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_94_cw.bin: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /test_vectors/generated_tv_94_d.bin: -------------------------------------------------------------------------------- 1 | banqngjyyqjqtyxzssldgenqyislzwhbfbborlgncjziuuvpydyyildfngyllmnqtrinlcnjyoahoclbstbevjqjzhalwtypnbmumqcdqzktvcofwovlzuqhhiiemlhlwvvfrwuhqyakonjgznyrvlwmbplyabdbnnuyngptouxkbuowfqkpuivbyzxxvswooczjxmuwpgjmqcdohursnopvgohoheooccxjcftozttojxumqnrkgxuqhldhhjyg -------------------------------------------------------------------------------- /test_vectors/generated_tv_95_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_95_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_95_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_95_d.bin: -------------------------------------------------------------------------------- 1 | iwpqqkzsdapvisjtarksdxfsdnbduuecrkzaajpshqgomqejoplwrtvhfcucwgrmfwfqplxkrpwgykfhruhcoxzykrkljwkrtjhjaxohmfpvlkdwbplgoaazsjxqgnzdefaomifpwgvvmdaxrhhvwnsxksckzlndeqzrducmjrmxpcknuyujihxzobfpmjvkxwuzvimjbhpomxfbduyghbivyvtuadymrrkdsmnpzrsicmgagoxlbjfhkosazkeb -------------------------------------------------------------------------------- /test_vectors/generated_tv_96_c.bin: -------------------------------------------------------------------------------- 1 | ygowhpgyslduubvkrddsadiljqqgokbexrtkwmylcbafkeftbylnwogrfduotcf0uqozrtxfghjkilpobsnxprwehvyobheepnqllckpvzixktisltowirndpilvvezkgrrjsxixqcfjakrmdymfjlrwrt03gnsjjhdfccwpolsijqwc0qzyprhgdudcqmfmkkxrqcjrqjpfmnnrxlkuspevuqacjhqsllrxvsxnofibmgfriweugsuigvh -------------------------------------------------------------------------------- /test_vectors/generated_tv_96_cw.bin: -------------------------------------------------------------------------------- 1 |   -------------------------------------------------------------------------------- /test_vectors/generated_tv_96_d.bin: -------------------------------------------------------------------------------- 1 | ygowhpgyslduubvkrddsadiljqqgokbexrtkwmylcbafkeftbylnwogrfduotcfbafuqozrtxfghjkilpobsnxprwehvyobheepnqllckpvzixktisltowirndpilvvezkgrrjsxixqcfjakrmdymfjlrwrtpvzgnsjjhdfccwpolsijqwclsiqzyprhgdudcqmfmkkxrqcjrqjpfmnnrxlkuspevuqacjhqsllrxvsxnofibmgfriweugsuigvh -------------------------------------------------------------------------------- /test_vectors/generated_tv_97_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_97_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_97_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_97_d.bin: -------------------------------------------------------------------------------- 1 | adgdguwhdhgtazomfidimthxzzpqrkgnyawuqgajtwpjlaehnkalaqhapubfatdxkzmhotuewjbubxtaslqosultbfegjkgwwtqlzvdvaioskvqwpbbpozqwfzyvtniniazrmgkmixathhqlqavrkzqaefdsjdhtvuomznfylkeszhmpcypekremwnfjttufjeohgkgvoujufonwkphdxsrqawzmxapugtkjjwjqcuzsqzusshtsnynhobdtcxli -------------------------------------------------------------------------------- /test_vectors/generated_tv_98_c.bin: -------------------------------------------------------------------------------- 1 | dlivdbjayvvwfqrhumxiojwqpspklatahxhaidlhopaqcdqibbnkjonegvrzrfwyveglrvshlajvzaxkcsnylrxzukwkk0-jgdylflldumeanwqlmuojzrckasvqnkmrhrnkbpcmxktgsnhhvekgdcguuaqrrkutuozrkbjcynhvkkyiwetgenlkynoxrmxoanabhmodygbdwmevbxhud0Pjckhjfazkzxlssyogzwirewsvuvjocvlwbnxwby -------------------------------------------------------------------------------- /test_vectors/generated_tv_98_cw.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test_vectors/generated_tv_98_d.bin: -------------------------------------------------------------------------------- 1 | dlivdbjayvvwfqrhumxiojwqpspklatahxhaidlhopaqcdqibbnkjonegvrzrfwyveglrvshlajvzaxkcsnylrxzukwkkbbnjgdylflldumeanwqlmuojzrckasvqnkmrhrnkbpcmxktgsnhhvekgdcguuaqrrkutuozrkbjcynhvkkyiwetgenlkynoxrmxoanabhmodygbdwmevbxhudpcmjckhjfazkzxlssyogzwirewsvuvjocvlwbnxwby -------------------------------------------------------------------------------- /test_vectors/generated_tv_99_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_99_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_99_cw.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_vectors/generated_tv_99_d.bin: -------------------------------------------------------------------------------- 1 | eokecnalqkaxtjiwaxqzsjbdlfuavhujvnwsphxvcoelawfkpkshehosdukusqmubrcpwnjaguvwnyzqdymxseoiyandzsubtfnejcquyivpmqirtqhrxbybmcolyhbdthjufmdxxmeabauggaubghfyqapbutrdaqjdbudnoviiixopmktkdfsepzgtmbvxchyghbnjbzwbfezlorlqsuhphcuwlpmdqeoolewyropkswreitohansgdisuwvvv -------------------------------------------------------------------------------- /test_vectors/generated_tv_9_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_9_c.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_9_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/generated_tv_9_cw.bin -------------------------------------------------------------------------------- /test_vectors/generated_tv_9_d.bin: -------------------------------------------------------------------------------- 1 | xpbdkfcretldvryhyhqjbyqxiqclzrpertrvryawwkxpotoabjzsffpmobeakevllfurnpcpkdbsmfqubypurupxgxtgadsoiovpyiilakcerhsdzunqledzxjyhylakmwphjoqnwxfmhwkcuedcstaslaufiqjqcltvnvyzbigxcpnllecgiyceetnlmoshndlxbhktnetjrojoglkvmelxhwcvbdvxjsnpfefebyeyoksavzjkjskcrqpbnjuc -------------------------------------------------------------------------------- /test_vectors/manual_tv_0_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_0_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_0_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_0_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_0_d.bin: -------------------------------------------------------------------------------- 1 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -------------------------------------------------------------------------------- /test_vectors/manual_tv_1_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_1_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_1_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_1_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_1_d.bin: -------------------------------------------------------------------------------- 1 | abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh -------------------------------------------------------------------------------- /test_vectors/manual_tv_2_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_2_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_2_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_2_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_2_d.bin: -------------------------------------------------------------------------------- 1 | dfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfgh -------------------------------------------------------------------------------- /test_vectors/manual_tv_3_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_3_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_3_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_3_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_3_d.bin: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, nonummy ligula volutpat hac integer nonummy. Suspendisse ultricies, congue etiam tellus, erat libero, nulla eleifend, mauris pellentesque. Suspendisse integer praesent vel, integer gravida mauris, fringilla vehicula lacinia non -------------------------------------------------------------------------------- /test_vectors/manual_tv_4_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_4_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_4_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_4_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_4_d.bin: -------------------------------------------------------------------------------- 1 | If you're visiting this page, you're likely here because you're searching for a random sentence. Sometimes a random word just isn't enough, and that is where the random sentence generator comes into play. By inputting the desired number, you can make a lis -------------------------------------------------------------------------------- /test_vectors/manual_tv_5_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_5_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_5_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_5_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_5_d.bin: -------------------------------------------------------------------------------- 1 | It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, -------------------------------------------------------------------------------- /test_vectors/manual_tv_6_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_6_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_6_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_6_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_6_d.bin: -------------------------------------------------------------------------------- 1 | Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly ninety-two million milesis an utterly insignificant little blue green planet who -------------------------------------------------------------------------------- /test_vectors/manual_tv_7_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_7_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_7_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_7_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_7_d.bin: -------------------------------------------------------------------------------- 1 | Kalak rounded a rocky stone ridge and stumbled to a stop before the body of a dying thunderclast. The enormous stone beast lay on its side, riblike protrusions from its chest broken and cracked. The monstrosity was vaguely skeletal in shape, with unnatural -------------------------------------------------------------------------------- /test_vectors/manual_tv_8_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_8_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_8_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_8_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_8_d.bin: -------------------------------------------------------------------------------- 1 | Eragon knelt in a bed of trampled reed grass and scanned the tracks with a practiced eye. The prints told him that the deer had been in the meadow only a half-hour before. Soon they would bed down. His target, a small doe with a pronounced limp in her lef -------------------------------------------------------------------------------- /test_vectors/manual_tv_9_c.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_9_c.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_9_cw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbridd/lzrw1-compression-core/1ccfb223c77e56c1a0a14484633b0402b972cbaf/test_vectors/manual_tv_9_cw.bin -------------------------------------------------------------------------------- /test_vectors/manual_tv_9_d.bin: -------------------------------------------------------------------------------- 1 | To be, or not to be--that is the question: Whether 'tis nobler in the mind to suffer The slings and arrows of outrageous fortune Or to take arms against a sea of troubles And by opposing end them. To die, to sleep--No more--and by a sleep to say we end The -------------------------------------------------------------------------------- /test_vectors/manual_tvs.txt: -------------------------------------------------------------------------------- 1 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2 | abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh 3 | dfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfghdfgh 4 | Lorem ipsum dolor sit amet, nonummy ligula volutpat hac integer nonummy. Suspendisse ultricies, congue etiam tellus, erat libero, nulla eleifend, mauris pellentesque. Suspendisse integer praesent vel, integer gravida mauris, fringilla vehicula lacinia non 5 | If you're visiting this page, you're likely here because you're searching for a random sentence. Sometimes a random word just isn't enough, and that is where the random sentence generator comes into play. By inputting the desired number, you can make a lis 6 | It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, 7 | Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly ninety-two million milesis an utterly insignificant little blue green planet who 8 | Kalak rounded a rocky stone ridge and stumbled to a stop before the body of a dying thunderclast. The enormous stone beast lay on its side, riblike protrusions from its chest broken and cracked. The monstrosity was vaguely skeletal in shape, with unnatural 9 | Eragon knelt in a bed of trampled reed grass and scanned the tracks with a practiced eye. The prints told him that the deer had been in the meadow only a half-hour before. Soon they would bed down. His target, a small doe with a pronounced limp in her lef 10 | To be, or not to be--that is the question: Whether 'tis nobler in the mind to suffer The slings and arrows of outrageous fortune Or to take arms against a sea of troubles And by opposing end them. To die, to sleep--No more--and by a sleep to say we end The --------------------------------------------------------------------------------