In the realm of wireless baseband processing, graph computing, and neural networks, dataflow models are often semi-static with predictable and stable patterns, making them suitable for domain-specific languages (DSLs) and domain-specific architectures (DSAs).
Directed acyclic graphs (DAGs) can formally represent these dataflow models, where:
Nodes denote tasks
Directed edges indicate communication between tasks
By utilizing DAG scheduling, we have developed an innovative, highly scalable external DSL and toolchain designed for dataflow-driven heterogeneous systems .
DSL Workflow Graph.
Data Types
The following are vector data types: int, short, char, float, double.
Language Structure
Keyword
Description
parameter
Initializes vector data
dfe_data
DAG input data coming from the digital front end
dag_input
Uses the dag_input parameter as input, instantiated as the input for a specific node in the DAG, typically used for input binding when creating task nodes.
return_value
Marks the output result of a task in the DAG, usually bound to a specific task node to represent the node’s execution return value.
dag
Connects various task nodes to build the entire DAG execution flow, coordinating task dependencies and execution order.
🚀 Quick Start
Step 1: Define DAG input data
' PDSCH.bas 内容
' input parameter
parameter short in1 = {1,2,3}
parameter short in2 = {2}
dag_input char dag_in1 = {1,2,3}
dfe_data int dfe_in1 = {1,2,3}
' output parameter
return_value short ncellid[1]
This configuration file defines the compilation environment, toolchain paths, and LLVM compilation parameters tailored for the Venus architecture. It is a core configuration script used for LLVM-based RISC-V custom backend development.