When I added modulation components from events(@tsv file) for 1st-level glm analysis,
nilearn produced different design matrix from SPM design matrix.

That is, whereas SPM yields design matrix with binary column regarding the onset duration,

Nilearn yields design matrix without regarding the onset duration.

I skimmed through the nilearn codes (design_matrix, experimental_paradigm) but I cannot fully understand why this difference occurs.
Was this came from my code error? Or the two protocols have different principles yielding the design matrix?

In spm, a parametric modulation is a modulation for one regressor literarily. So, it will add an additional regressor which has the same onset time as the modulated regressor.

But in nilearn, the parametric modulation is a independent regressor and it’s onset should be specified by you in event file. Of course, the onset and duration should be the same as the modulated regressor.
It is my understanding.