InCoder-32B-Thinking is the reasoning variant of the InCoder family. It extends InCoder-32B with chain-of-thought reasoning via <think>...</think> tags, enabling step-by-step problem decomposition before generating code. This is particularly effective for complex industrial tasks that require multi-step reasoning — debugging RTL modules, optimizing GPU kernels, or diagnosing embedded firmware issues.
The thinking variant shows consistent improvements across both general and industrial benchmarks, with the largest gains on tasks requiring multi-step reasoning.
Model Architecture
Same architecture as InCoder-32B, with thinking-aware post-training:
Hyperparameter
Value
Parameters
~32B
Layers
64
Hidden Size
5,120
Attention Heads
40 (8 KV heads, GQA)
Max Context Length
131,072 (128K)
Positional Encoding
RoPE (θ = 500,000)
Precision
BFloat16
How Thinking Mode Works
InCoder-32B-Thinking generates a reasoning trace inside <think>...</think> tags before producing the final answer. This allows the model to:
Decompose complex problems into sub-tasks
Reason about constraints, edge cases, and hardware semantics
Plan the solution structure before writing code
Example output:
<think>
The user wants a UART transmitter module. Let me think through the design:
1. Need a state machine: IDLE -> START_BIT -> DATA_BITS -> STOP_BIT
2. 8N1 means: 8 data bits, no parity, 1 stop bit
3. Need a baud rate counter derived from the clock frequency
4. Shift register to serialize the 8-bit data LSB first
</think>
module uart_tx (
input wire clk,
...
You can disable thinking mode to get direct answers (behaves like the instruct variant):
The thinking trace may occasionally contain reasoning errors or hallucinated constraints — always verify the final code output.
For simple tasks, thinking mode adds latency; use enable_thinking=False for straightforward generation.
Based on failure analysis, the model may struggle with:
API Knowledge: Linker errors from undefined HAL/CMSIS functions in embedded C.
Functional Semantics: Producing compilable but functionally incorrect RTL under complex logic scenarios.
Optimization: Correct but sub-optimal GPU kernel performance.
Always review and test generated code in a sandboxed environment. Industrial code (RTL, embedded firmware, GPU kernels) requires expert review before deployment.
Citation
bibtex
1@article{yang2026incoder,
2 title={InCoder-32B: Code Foundation Model for Industrial Scenarios},
3 author={Yang, Jian and Zhang, Wei and Wu, Jiajun and Cheng, Junhang and Guo, Shawn
4 and Wang, Haowen and Gu, Weicheng and Du, Yaxin and Li, Joseph and Xu, Fanglin
5 and others},
6 journal={arXiv preprint arXiv:2603.16790},
7 year={2026}
8}