fayalite 0.2.0

Hardware Description Language embedded in Rust, using FIRRTL's semantics
Documentation
// SPDX-License-Identifier: LGPL-3.0-or-later
// See Notices.txt for copyright information
#![doc = include_str!("../README.md")]

//!
//! # Organization
//!
//! All Fayalite-based designs are organized as one or more [modules][`module::Module`]
//! -- modules are created by writing a Rust function with the
//! [`#[hdl_module]` attribute][hdl_module].  You can then invoke the function to create a module.
//! You use the implicitly-added [`m: ModuleBuilder`][`module::ModuleBuilder`] variable in that
//! function to add inputs/outputs and other components to that module.
//!
//! ```
//! # use fayalite::prelude::*;
//! #
//! #[hdl_module]
//! pub fn example_module() {
//!     #[hdl]
//!     let an_input: UInt<10> = m.input(); // create an input that is a 10-bit unsigned integer
//!     #[hdl]
//!     let some_output: UInt<10> = m.output();
//!     connect(some_output, an_input); // assigns the value of `an_input` to `some_output`
//! }
//! ```

pub mod modules;
pub mod semantics;

#[allow(unused)]
use crate::{hdl_module, module};