Thdl is a tool for easing the work with hardware description languages.

Tests

THDL

Thdl is a tool for easing the work with hardware description languages. It is (and will always be) based solely on text processing, with no semantic analysis. Such an approach draws a clear line between what might be included and what will never be supported. The 'THDL' acronym doesn't have any expansion. The first 'T' letter might be interpreted as 'text', as the tool is based on text processing. However, don't read THDL as "Text Hardware Description Language" and do not treat it as such. Part of the first prototype was implemented when I was on a train. The 'train' word also starts with 't', so I thought 'thdl' would be a good name.

Documentation

The documentation is included in the thdl binary. Simply run thdl help or thdl help {command} to read about particular command.

Commands

The commands are:

  • doc - show or generate documentation (not yet fully supported, but more than usable),
  • gen - generate HDL files by processing sources (not yet supported),
  • vet - check for likely mistakes.

Installation

go

go install github.com/m-kru/go-thdl/cmd/thdl@latest

Go installation installs to go configured path.

Manual

git clone https://github.com/m-kru/go-thdl.git
make
make install

Manual installation installs to /usr/bin.

Examples

doc

Similar Resources

mkcert is a simple tool for making locally-trusted development certificates

mkcert is a simple tool for making locally-trusted development certificates

A simple zero-config tool to make locally trusted development certificates with any names you'd like.

Jan 5, 2023

CLI Tool to remove unwanted connections from your Chia Node based on Geo IP Location.

chia-bouncer Tiny CLI tool to remove unwanted connections from your Chia Node based on the Geo IP Location (Country). The Tool is written in golang an

Jun 25, 2021

Sekura is an Encryption tool that's heavily inspired by the Rubberhose file system.

It allows for multiple, independent file systems on a single disk whose existence can only be verified if you posses the correct password.

Oct 16, 2022

EVM frontrunning tool

CAKE SNIPER FRONTRUNNING BOT =================================================== BEFORE STARTING: This bot require you to run the GETH client + use

Jan 9, 2023

ddlcpad, *Doki Doki Literature Club Plus Asset Decrypter*, is a tool to decrypt the encrypted asset file on the Doki Doki Literature Club Plus. Writing in golang.

ddlcpad 简体中文 What is this ddlcpad is short of Doki Doki Literature Club Plus Asset Decrypter You can decrypt the *.cy file from Doki Doki Literature C

Nov 27, 2022

A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.

A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.

A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.

Jan 7, 2023

An easy tool to apply transactions to the current EVM state. Optimized for MEV.

sibyl A more embedded version of fxfactorial/run-evm-code. This tool makes it easy to apply transactions to the current EVM state. Call it a transacti

Dec 25, 2022

Red team tool that emulates the SolarWinds CI compromise attack vector.

Red team tool that emulates the SolarWinds CI compromise attack vector.

SolarSploit Sample malicious program that emulates the SolarWinds attack vector. Listen for processes that use the go compiler Wait for a syscall to o

Nov 9, 2022

Tool for monitoring your Ethereum clients. Client-agnostic as it queries the standardized JSON-RPC APIs

Tool for monitoring your Ethereum clients. Client-agnostic as it queries the standardized JSON-RPC APIs

e7mon Tool for monitoring your Ethereum clients. Client-agnostic as it queries the standardized JSON-RPC APIs. However, the execution client should be

Dec 20, 2022
Comments
  • [doc] Handle test bench entities.

    [doc] Handle test bench entities.

    Test bench entities often have the same name, this implies that the symbol is not unique. Library summary prints the last one encountered. Path to symbol is always ambiguous.

    One possible approach is to handle it the same way overloaded functions and procedures are handled.

  • Handle package instantiations

    Handle package instantiations

    Example:

    package ethernet_sb_pkg is new bitvis_vip_scoreboard.generic_sb_pkg
      generic map ( t_element         => t_ethernet_frame,
                    element_match     => ethernet_match,
                    to_string_element => to_string);
    

    from bitvis_vip_ethernet/src/ethernet_sb_pkg.vhd.

  • Undeterministic behavior when there is a package and package instantiation with the same name

    Undeterministic behavior when there is a package and package instantiation with the same name

    file1.vhd

    package float_pkg is new IEEE.float_generic_pkg
      generic map (
        float_exponent_width => 8,    -- float32'high
        float_fraction_width => 23,   -- -float32'low
        float_round_style    => IEEE.fixed_float_types.round_nearest,  -- round nearest algorithm
        float_denormalize    => true,  -- Use IEEE extended floating
        float_check_error    => true,  -- Turn on NAN and overflow processing
        float_guard_bits     => 3,     -- number of guard bits
        no_warning           => false, -- show warnings
        fixed_pkg            => IEEE.fixed_pkg
        );
    

    file2.vhd

    package float_pkg is
      function to_string (value : UNRESOLVED_float) return STRING;
    end package float_pkg;
    

    Output

    [user@host test]$ thdl doc to_string
    vhdl:work.float_pkg.to_string
    
    float_pkg_c.vhd
    
    function to_string (value : UNRESOLVED_float) return STRING;
    [user@host test]$ thdl doc to_string
    found no symbol matching path 'to_string'
    
A work-in-progress Bitcoin wallet based on Output Descriptors

go-wallet A work-in-progress Bitcoin wallet Descriptors go-wallet is designed around Bitcoin Descriptors. It implements a Output Script Descriptors la

May 4, 2022
Attempts to make attribute based encryption work, particularly trying out bn256 pairing curve
Attempts to make attribute based encryption work, particularly trying out bn256 pairing curve

EC Pairings over bn256 This is an attempt to solve the core problem of attribute based encryption, where the goal is to be able to use CA-issued attri

Jan 5, 2022
Proof of Work (POW) using SHA1 hashes

Important The main repository is hosted at Codeberg. Proof of Work (SHA1) This repository contains a naive implementation of a Proof of Work (POW) usi

Dec 23, 2021
Proof of Work Algorithms For Golang

Proof of Work Algorithms Overview Note: This library is still in active developm

Jan 7, 2022
Project work for the course DD1327 - Fundamentals of Computer Science

DD1327_Golang_Project - Project work for the course DD1327 - Fundamentals of Computer Science. Hash table package implemented in Go, May 11 2020.

Dec 31, 2021
Asu-go2js - Asu is a library to work with subtitles on ASS format.

asu-go2js Asu is a library to work with subtitles on ASS format. asu-go2js is a port of Asu (originally for .NET) written in Go and compiled to JavaSc

Jan 8, 2022
Proof-Of-Work blockchian written in Go

gagchain (Gagcoin) Experimental blockchain built in Golang. It is still under development and features will be updated regulary. Features Custom TCP s

Feb 21, 2022
Pet-blockchain-go is a simple proof of work mining algorithm in Go.

pet-blockchain-go Pet-blockchain-go is a simple proof of work mining algorithm in Go. Inspired by: cosme12 / SimpleCoin nosequeldeebee / blockchain-tu

Mar 10, 2022
A dead simple tool to sign files and verify digital signatures.

minisign minisign is a dead simple tool to sign files and verify signatures. $ minisign -G

Dec 16, 2022
hack-browser-data is an open-source tool that could help you decrypt data from the browser.
hack-browser-data is an open-source tool that could help you decrypt data  from the browser.

hack-browser-data is an open-source tool that could help you decrypt data ( password|bookmark|cookie|history|credit card|download

Dec 23, 2022