Trying to preserve other peoples code
Summary
This article describes the CRC Generator, a command-line tool for generating Verilog/VHDL CRC code, and its archival on GitHub by Julia Desmazes to preserve the tool originally by Evgeni Stavinov.
View Cached Full Text
Cached at: 05/26/26, 03:55 PM
Essenceia/CRC_generator
Source: https://github.com/Essenceia/CRC_generator
CRC Generator for Verilog or VHDL
Description
CRC Generator is a command-line application that generates Verilog or VHDL code for CRC of any data width between 1 and 1024 and polynomial width between 1 and 1024. The code is written in C and is cross-platform compatible.
Build
To build on linux using gcc:
g++ -o crc_gen crc_gen.cpp
Usage
Invoke the tool via command line:
./crc_gen [language] [data_width] [poly_width] [poly_string]
Options:
language:verilogorvhdldata_width: data bus width {1..1024}poly_width: polynomial width {1..1024}poly_string: a string that describes CRC polynomial, eg: Ethernet MAC FCS uses poly04C11DB7
Notes on poly_string
Examples:
05 = x^5+x^2+1
8005 = x^{16} + x^{15}+ x^2+ 1
The string representation (0x05, 0x8005) doesn’t include highest degree coefficient in polynomial representation (x^5 and x^{16} in the above examples).
Output Examples
Printing usage:
./crc_gen
usage:
crc-gen language data_width poly_width poly_string
parameters:
language : verilog or vhdl
data_width : data bus width {1..1024}
poly_width : polynomial width {1..1024}
poly_string : polynomial string in hex
example: usb crc5 = x^5+x^2+1
crc-gen verilog 8 5 05
Generation in action:
./crc_gen verilog 2 4 3
//-----------------------------------------------------------------------------
// Copyright (C) 2009 OutputLogic.com
// This source file may be used and distributed without restriction
// provided that this copyright statement is not removed from the file
// and that any derivative work contains the original copyright notice
// and the associated disclaimer.
// THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
// WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//-----------------------------------------------------------------------------
// CRC module for
// data[1:0]
// crc[3:0]=1+x^1+x^4;
//
module crc(
input [1:0] data_in,
input crc_en,
output [3:0] crc_out,
input rst,
input clk);
reg [3:0] lfsr_q,
lfsr_c;
assign crc_out = lfsr_q;
always @(*) begin
lfsr_c[0] = lfsr_q[2] ^ data_in[0];
lfsr_c[1] = lfsr_q[2] ^ lfsr_q[3] ^ data_in[0] ^ data_in[1];
lfsr_c[2] = lfsr_q[0] ^ lfsr_q[3] ^ data_in[1];
lfsr_c[3] = lfsr_q[1];
end // always
always @(posedge clk, posedge rst) begin
if(rst) begin
lfsr_q <= {4{1'b1}};
end
else begin
lfsr_q <= crc_en ? lfsr_c : lfsr_q;
end
end // always
endmodule // crc
Archived version
This repository is a mirror of the version currently found on source forge, duplicated here in an effort to no help preserve this tool into the future. I, Julia Desmazes, have not contributed in any way to the development of this tool, all credit belongs to the original author.
In addition to being a command line tool, this tool also used to be available interactively though the now defuncts OutputLogic website.

About the original author
Evgeni Stavinov is the creator and main developer of OutputLogic.com. Evgeni has more than 20 years of diverse design experience in the areas of FPGA logic design, embedded software and communication protocols. He holds MSEE from University of Southern California and BSEE from Technion – Israel Institute of Technology. For more information contact [email protected]
License
This code is licensed under MIT license, all rights reserved to Evgeni Stavinov. See LICENSE for more details.
Similar Articles
Repo0: Design-Driven Zero-to-All Code Generation
Repo0 is a framework for zero-to-all code generation that uses a Dual-DAG architectural state and modularity-guided structural evolution to generate complete software repositories from natural-language requirements, achieving significant improvements in functionality coverage and pass rate compared to baselines.
@QingQ77: Provides coding agents with tree-sitter-based, structured, byte-precise, low-token codebase access https://github.com/Entelligentsia/grove… Wrote a dual-purpose tool in Rust: can be used as both a CLI and via MCP protocol
Grove is a Rust-powered tool that uses tree-sitter to provide coding agents with structured, byte-precise, token-efficient access to codebases, supporting 27 languages via CLI and MCP server.
TraceCoder: Explainable and Auditable Code Generation with Position-Key Snippet Versioning
This paper presents TraceCoder, a code generation system that records and visualizes the repair history of AI-generated code at snippet granularity, enabling explainable and auditable auditing of LLM-based coding agents.
Back to the Building Blocks’ Building Blocks
The article draws parallels between the security flaws in C/C++ and those in Verilog, arguing that the hardware description language's design leads to bugs and that the industry should invest in safer alternatives, similar to the push for memory-safe programming languages in software.
@FakeMaidenMaker: Definitely bookmark this tool that cures Claude Code's 'messier as you write' problem — GSD. Its predecessor Get Shit Done racked up 64K Stars on GitHub, and it's now migrated to GSD Core for continued maintenance. Let Claude Code tackle a slightly larger task…
GSD Core is an open-source workflow framework that solves the problem of context pollution and code quality degradation in AI coding tools like Claude Code during long tasks through a five-step cycle of 'Discussion → Planning → Execution → Verification → Delivery' and sub-agents with independent contexts. It has gained 64K Stars on GitHub.